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

7 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

Anonim mengatakan...

palm angels t shirt
kevin durant shoes
curry shoes
kd13

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 )