Rabu, 22 Juli 2009

tree ( pohon biner )

@ Definisi TREE
Sebuah tree didefinisikan sebagai struktur y ang dibentuk secara recursive oleh kedua rule berikut:
1.Sebuah node adalah sebuah tree. Node satu-satunya pada tree ini berfungsi sebagai root maupun leaf.
2.Dari k buah tree T1~Tk , dan masing-masing memiliki root n1~nk.Jika node n adalah parent dari noden1~nk, akan diperoleh sebuah tree baru T yang memiliki root n. Dalam kondisi ini, tree T1~Tkmenjadi sub-tree dari tree T. Root dari sub-tree n1~nkadalah child dari node n .



@ Contoh Program Tree



#include "iostream.h"
#include "string.h"
#include "conio.h"
struct simpulpohon{
simpulpohon *induk;
simpulpohon *kiri;
simpulpohon *kanan;
char data;};

class pohonbiner{
private:
simpulpohon *akar;

int tambah(simpulpohon *orangtua, simpulpohon *baru);
void tampil(simpulpohon *simpul);

public:
pohonbiner();
int tambah(char data);
void tampil();
};


void main()
{
clrscr();
char data[] = "CARKDUPBENXZS";
pohonbiner pohon;
for (int i = 0; i < strlen(data); i++)
pohon.tambah(data[i]);
cout<<"Data ke Pohon Biner : "<kiri = NULL;
simpul->kanan = NULL;
simpul->induk = NULL;
simpul->data = data;

if (akar == NULL) {
akar = simpul;
return(1);
}
else return(tambah(akar,simpul));
}

int pohonbiner::tambah(simpulpohon *orangtua, simpulpohon *baru)
{
if (baru->data ==orangtua->data)
{
delete baru; return(0);
}
else if (baru->data <>data)
{
if (!orangtua->kiri)
{
orangtua->kiri = baru;
baru->induk = orangtua;
}
else return(tambah(orangtua->kiri,baru));
}
else
{
if (!orangtua->kanan)
{
orangtua->kanan = baru;
baru->induk = orangtua;
}
else return(tambah(orangtua->kanan,baru));
}
return(1);}


void pohonbiner::tampil()
{
tampil(akar); cout<kiri) tampil(simpul->kiri);
cout<data;

if (simpul->kanan) tampil(simpul->kanan); }
}

Selasa, 21 Juli 2009

queue

Queue


Merupakan kumpulan data yang penambahan elemennya hanya bisa dilakukan pada sisi belakang dan penghapusannya hanya bisa dilakukan pada sisi depan. Konsep utamanya berkebalikan dari Stack(tumpukan), yaitu FIFO(First In First Out). Contoh : orang beli tiket ke kebun binatang, mahasiswa antri bayar KRS. Implementasi antrian menggunakan dua pointer, yaitu pointer yang menunjukkan elemen terdepan dan terakhir.


Operasi antrian


  • Menambah elemen baru pada bagian belakang antrian

  • Menghapus elemen baru apda bagian depan antrian

  • Melakukan pengecekan apakah antrian kosong. Tidak mungkin mengahapus antrian yang sudah kosong.


#include "iostream.h"
#include "iomanip.h"
#include "string.h"
#include "conio.h"

struct node
{ char nama[35];
int nilai;
node *next;
};

class senarai
{
private:
node *pertama;


public:
senarai();

int tambah(char *nama, int nilai);
void tampil();

};


void main()
{
clrscr();
senarai daftar;

daftar.tambah("Aku", 70);
daftar.tambah("kamu", 80);
daftar.tampil();

}


senarai::senarai()
{
pertama= NULL;
}



int senarai::tambah(char *nama, int nilai)
{
node *baru;
node * blk;
baru = new node;
if (baru)
{
strcpy(baru->nama,nama);
baru->nilai = nilai;
baru->next=NULL;

if (pertama==NULL)
pertama = baru;
else
if (pertama != NULL)
{
blk->next = baru;
}
blk = baru;

return(1);
}
else
return(0);
}

void senarai::tampil()
{
node *ptr_data = pertama;

cout<<<<<"DAFTAR NILAI"<<<nama <<>nilai <next;

}
cout<<
getch();
}