Sudah berlangganan artikel blog ini via RSS Feed?

DLLNC dengan HEAD dan TAIL

Sekarang kita akana memembahas tentang DLLNC HEAD dan TAIL, yang dibutuhkan ada dua buah variabel pointer: head dan tail
Head akan selalu menunjuk pada node pertama , sedangkan tail akan selalu menunjuk pada node terakhir .



Inisialisasi DLLNC

TNode *head, *tail; Fungsi Inisialisasi DLLNC
void init(){
head = NULL;
tail = NULL;
}

Function untuk mengetahui kosong tidaknya DLLNC
int isEmpty (){
if(tail == NULL) return 1;
else return 0;
}



Tambah Depan
void insertDepan ( int databaru ){
TNode * baru ;
baru = new TNode ;
baru ->data = databaru ;
baru ->next = NULL;
baru -> prev = NULL;
if( isEmpty ()==1){
head= baru ;
tail=head;
head->next = NULL;
head-> prev = NULL;
tail-> prev = NULL;
tail->next = NULL;
}
else {
baru ->next = head;
head-> prev = baru ;
head = baru ;
}
cout <<"Data masuk \n";
}



Penambahan node di belakang
Penambahan node di belakang akan selalu dikaitkan dengan tail dan kemudian
node baru tersebut akan menjadi tail

void insertBelakang ( int databaru ){
TNode * baru ;
baru = new TNode ;
baru ->data = databaru ;
baru ->next = NULL;
baru -> prev = NULL;
if( isEmpty ()==1){
head= baru ;
tail=head;
head->next = NULL;
head-> prev = NULL;
tail-> prev = NULL;
tail->next = NULL;
}
else {
tail->next = baru ;
baru -> prev = tail;
tail = baru ;
tail->next = NULL;
}
cout <<"Data masuk \n";
}





Function untuk menampilkan isi linked list
void tampil (){
TNode *bantu;
bantu = head;
if( isEmpty ()==0){
while(bantu!=tail->next){
cout <data<<" ";
bantu=bantu->next;
}
cout << endl ;
} else cout <<" Masih kosong \n";
}





Function untuk menghapus data di data terdepan
void hapusDepan (){
TNode * hapus ;
int d;
if ( isEmpty ()==0){
if(head->next != NULL){
hapus = head;
d = hapus ->data;
head = head->next;
head-> prev = NULL;
delete hapus ;
} else {
d = head->data;
head = NULL;
tail = NULL;
}
cout <<<" terhapus \n";
} else cout <<" Masih kosong \n";
}




Function untuk menghapus node terbelakang
void hapusBelakang (){
TNode * hapus ;
int d;
if ( isEmpty ()==0){
if(head->next != NULL){
hapus = tail;
d = tail->data;
tail = tail-> prev ;
tail->next = NULL;
delete hapus ;
} else {
d = head->data;
head = NULL;
tail = NULL;
}
cout <<<" terhapus \n";
} else cout <<" Masih kosong \n"; }
}

Pointer hapus tidak perlu di loop untuk mencari node terakhir . Pointer hapus hanya perlu menunjuk pada pointer tail saja .

Karena pointer hapus sudah bisa menunjuk ke pointer sebelumnya dengan menggunakan elemen prev , maka pointer prev hanya perlu diset agar menunjuk ke NULL. Lalu pointer hapus didelete .




Function untuk menghapus semua elemen LinkedList
void clear(){
TNode *bantu,* hapus ;
bantu = head;
while(bantu!=NULL){
hapus = bantu;
bantu = bantu->next;
delete hapus ;
}
head = NULL;
tail = NULL;
}

Menggunakan pointer bantu yang digunakan untuk bergerak sepanjang list, dan menggunakan pointer hapus yang digunakan untuk menunjuk node-node yang akan dihapus .

 Pada saat pointer hapus menunjuk pada node yang akan dihapus , pointer bantu akan bergerak ke node selanjutnya , dan kemudian pointer hapus akan didelete .
Terimakasih sudah mengunjungi blog ini... :D

Powered by  MyPagerank.Net

6 komentar:

Rudee mengatakan...

wah,, saya harus belajar banyak tentang STACK disini nih...

CHORDPOPROCK mengatakan...

@ rudee : sip...

Majalengka News mengatakan...

mantap lah...

toko bunga mengatakan...

ikut menyimak dan belajar

Aussie mengatakan...

makasih tutorialnya

Unknown mengatakan...

Kasih tutorial penambahan menu edit dong

Posting Komentar

 

My Friends Google

My Profile

cojogja Blog ini saya buat, untuk berbagi informasi kepada teman - teman, dan sebagai rangkuman untuk diri saya sendiri. ( Semoga gak bosen Dengan Blog Saya... :D )