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 <
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 <
} 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 <
} 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 .
6 komentar:
wah,, saya harus belajar banyak tentang STACK disini nih...
@ rudee : sip...
mantap lah...
ikut menyimak dan belajar
makasih tutorialnya
Kasih tutorial penambahan menu edit dong
Posting Komentar