LINKED LIST BERKEPALA DAN BEREKOR Linked list berkepala dan berekor (headed and tail)adalah Linked list yang ditambahkan dua node ”dummy” masing-masing kepala dan ekor tetapi secara logik tidak termasuk anggota linked list. Kepala Ekor Elemen INFO Info Kepala diberi nilai yang pasti lebih kecil dari semua kemungkinan nilai yang ada Info Ekor diberi nilai yang pasti lebih besar dari semua kemungkinan nilai yang ada
Penyisipan dan penghapusan selalu terjadi ditengah. ! Contoh linked list yang memiliki 4 elemen list (node): -1 10 15 20 25 101 Kepala Elemen List Ekor Linked List Kosong Jika linked list hanya terdiri dari kepala dan ekor saja, karena yang dihitung sebagai node adalah list yang berada diantara kepala dan ekor. Contoh: Kepala -1 101 Ekor Keuntungan: Penyisipan dan penghapusan selalu terjadi ditengah. !
a. Sisip Node -1 10 20 30 101 Sisipnode(25) 25 10 20 25 30 -1 101 Bantu -1 10 20 30 101 Kepala Ekor Sisipnode(25) 25 NB Hasil : 10 20 25 30 Kepala -1 101 Ekor
Fungsi Menyisipkan Node (bahasa C). void sisiptengah(tipeinfo IB) { tipeptr NB, bantu; NB=(node *) malloc(sizeof(node)); NB->info=IB; NB->next=NULL; bantu=kepala; while(bantu->next->info<IB) bantu=bantu->next; NB->next=bantu->next; bantu->next=NB; }
b. Hapus Node 20 -1 30 10 40 101 Hapusnode(30) 20 -1 40 10 101 Hasil : Bantu Hapus -1 10 20 30 40 101 Kepala Ekor Hapusnode(30) Hasil : 10 20 40 101 -1 Kepala Ekor
c. Cetak Isi Linked List -1 10 10 20 20 30 30 40 40 101 10 20 30 40 Bantu -1 10 10 20 20 30 30 40 40 101 Kepala Ekor Hasil : 10 20 30 40
Fungsi Mencetak dari Depan (bahasa C). void cetaklist() { tipeptr bantu; bantu=kepala->next; while (bantu!=Ekor) { printf("%d ",bantu->info); bantu=bantu->next; }