LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada di sebelah kiri menunjuk ke node sebelumnya dan yang berada di kanan menunjuk ke node setelahnya. Hal tersebut akan memudahkan pembacaan isi list karena bisa dilakukan dari arah kiri maupun dari arah kanan tanpa harus membalik arah pointer. Untuk penambahan node baru maupun penghapusan dapat dilakukan pada node yang berada di sebelah kiri atau sebelah kanan dari pointer yang diketahui. Awal Akhir INFO
INFO : Berfungsi untuk menyimpan data yang harus disimpan. Setiap elemen list (node) terdiri dari tiga komponen yaitu info, kiri dan kanan. Node KANAN INFO KIRI INFO : Berfungsi untuk menyimpan data yang harus disimpan. KIRI : Berfungsi untuk menyimpan alamat elemen sebelumnya. KANAN: Berfungsi untuk menyimpan alamat elemen berikutnya. Untuk mendefinisikan kondisi node di atas, berikut deklarasi dalam bahasa C. Typedef int tipeinfo; typedef struct node *tipeptr; typedef struct node{tipeinfo info; tipeptr kiri; tipeptr kanan; };
Sisip Node di Depan 30 40 20 50 Sisipnode(10) 10 30 10 40 20 50 Awal Akhir Sisipnode(10) NB 10 Hasil : 20 30 40 50 Akhir 10 Awal
b. Sisip Node di Tengah 20 30 40 50 45 Sisipnode(45) 30 40 45 50 20 Bantu 20 30 40 50 Awal Akhir NB 45 Sisipnode(45) Hasil : 30 40 45 50 Akhir 20 Awal
c. Sisip Node di Akhir 20 30 40 50 Sisipnode(60) 60 30 40 50 60 20 Bantu 20 30 40 50 Awal Akhir Sisipnode(60) NB 60 Hasil : 30 40 50 60 Akhir 20 Awal
Tugas: Buatlah fungsi untuk mencetak dari belakang Cetak Linked List Proses mencetak isi linked list ganda dengan cara menelusuri seluruh node pada linked list. Ada dua cara untuk mencetak yaitu mencetak dari depan ke belakang dan dari belakang ke depan. Cetak Dari Depan Bantu 10 10 20 20 30 30 40 40 50 50 Awal Akhir Hasil : 10 20 30 40 50 Tugas: Buatlah fungsi untuk mencetak dari belakang
Menghapuskan Node Proses menghapus node pada linked list ganda terjadi pada tiga tempat, yaitu masing-masing di depan, tengah dan belakang. a. Hapus Node di Depan Hapus 10 10 20 20 30 30 40 40 50 50 Awal Akhir Hapusnode(10) Hasil : 30 40 50 Akhir 20 Awal
b. Hapus Node di Tengah 10 10 20 20 30 30 40 40 50 50 Hapusnode(30) 20 Bantu Hapus 10 10 20 20 30 30 40 40 50 50 Awal Akhir Hapusnode(30) Hasil : 20 40 50 Akhir 10 Awal
c. Hapus Node di Akhir 10 10 20 20 30 30 40 40 50 50 Hapusnode(50) 20 Awal Akhir Hapusnode(50) Hasil : 20 30 40 Akhir 10 Awal