Double Linked List rigida rie Minartiningtyas, M.Kom
Review Linked List Linked list yang kita pelajari sebelumnya hanya mempunyai sebuah pointer pada setiap simpulnya. Hal ini merupakan kelemahan bahwa linked list tersebut hanya bisa dibaca dalam satu arah saja, yaitu dari kiri ke kanan. Hal yang seperti ini kurang cepat jika kita ingin mencari data di dalam linked list
Double Linked List Untuk itulah kita memerlukan linked list yang setiap simpulnya mempunyai 2 buah pointer Dengan pointer pertama menunjuk ke simpul sebelumnya (sebelah kiri) dan pointer kedua menunjuk ke simpul sesudahnya (disebelah kanan). Hal ini akan mempermudah pembacaan (bisa dilakukan dari kiri ke kanan dan dari kanan ke kiri), begitu juga untuk penambahan simpul dan penghapusan simpul
Double Linked List QUEUE / NTRIN KEPL D Secara garis besar Double linked list adalah linked list yang memiliki dua buah pointer yang menunjuk ke simpul sebelumnya (Prev) dan yang menunjuk ke simpul sesudahnya (Next).
DEKLRSI Linked List I NYK 1. Menambah simpul Tambah belakang Tambah depan RRY Tambah (LRIK) tengah 2. Menghapus simpul (dengan masukkan)
MENMH SIMPUL 1. TMH DEPN akhir D Type Simpul = ^Data; Data = record Isi : char; Kiri, Kanan : Simpul; var Elemen : char; Kepala : Simpul; 1 2 3 4 Procedure TMH(var Kepala Elemen : char) ; : Simpul; var aru : Simpul; new(aru); aru^.isi:= Elemen; aru^.kanan:= Kepala^.kanan; { no. 1} aru^.kiri := Kepala; { no. 2} Kepala^.kanan^.kiri := aru; { no. 3} Kepala^.kanan := aru; { no. 4}
MENMH SIMPUL 2. TMH TENGH akhir D Type Simpul = ^Data; Data = record Isi : char; Kiri, Kanan : Simpul; var Elemen : char; Kepala : Simpul; 1 2 3 4 Procedure TMH(var Kepala Elemen : char) ; var aru, antu : Simpul; new(aru); aru^.isi:= Elemen; while antu^.kanan^.isi < Elemen do antu := antu^.kanan; : Simpul; aru^.kanan:= antu^.kanan; { no. 1} aru^.kiri := antu; { no. 2} antu^.kanan^.kiri := aru; { no. 3} antu^.kanan := aru; { no. 4}
MENMH SIMPUL 3. TMH ELKNG akhir Type Simpul = ^Data; Data = record Isi : char; Kiri, Kanan : Simpul; var Elemen : char; Kepala : Simpul; 1 2 Procedure TMH(var Kepala Elemen : char) ; var aru, antu : Simpul; new(aru); aru^.isi:= Elemen; while antu^.kanan^.isi < Elemen do antu := antu^.kanan; : Simpul; aru^.kiri := antu; { no. 1} antu^.kanan := aru; { no. 2}
MENMH SIMPUL Procedure TMH(var Kepala : Simpul; Elemen : char) ; var aru, antu : Simpul; new(aru); {* lokasi simpul *} with aru^ do {* Pengisian data dan inisialisasi *} Isi := Elemen; Kiri := nil; Kanan:= nil := Kepala; while antu^.kanan^.isi < elemen do {* Penempatan posisi var antu *} antu := antu^.kanan; if antu^.kanan <> nil then {* Penyisipan di tengah *} egin aru^.kanan := antu^.kanan; antu^.kanan^.kiri := aru; antu^.kanan := aru; {* Menambah di belakang *} aru^.kiri := antu
MENGHPUS SIMPUL HPUS_SIMPUL(Kepala, ) akhir Type Simpul = ^Data; Data = record Isi : char; Kiri, Kanan : Simpul; var Elemen : char; Kepala : Simpul; Procedure HPUS_SIMPUL(var Kepala : Simpul; Elemen : char) ; 1 2 3 var antu : Simpul; egin repeat antu := antu^.kanan until (antu^.isi = Elemen) or (antu = Kepala); if antu^.isi = Elemen then { no. 1} antu^.kiri^.kanan := antu^.kanan; { no. 2} antu^.kanan^.kiri := antu^.kiri; { no. 3} dispose(antu); antu := Kepala
MENGHPUS SIMPUL Procedure HPUS_SIMPUL(var wal, khir : Simpul; Elemen : char) ; var antu : Simpul; egin if Kepala^.Kanan = Kepala then writeln( Senarai KOSONG ) {* Senarai Kosong *} else {* Jika Senarai isi *} antu := Kepala; repeat (* Mencari simpul yang akan dihapus *) antu := antu^.kanan until (antu^.isi = Elemen) or (antu = Kepala); if antu^.isi = Elemen then antu^.kiri^.kanan := antu^.kanan; antu^.kanan^.kiri := antu^.kiri; dispose(antu); antu := Kepala; end else writeln( Karakter yang akan dihapus TIDK D ) end
Linked List Single Linked List Disebut demikian karena pada setiap simpul hanya memiliki satu buah field yang berhubungan dengan simpul berikutnya Double Linked List Linked List ini memiliki dua buah field yang digunakan untuk menunjuk ke simpul sebelumnya dan ke simpul sesudahnya. anyak digunakan untuk mempermudah proses pencarian simpul dalam suatu senarai berantai.
Variasi Linked List Header Single Linked List ircular Single Linked List Header ircular Single Linked List