Transcript double link list
Linear Data Structures
(Linked List)
Node Link atau pointer data field
Pointer Bantu • • Head/First : Pointer yang menunjuk ke node paling depan.
Tail/Last : Pointer yang menunjuk ke node paling belakang.
Double Linked List
Definisi • • • Linked list dengan dua pointer(next & prev) Pointer next : menghadap ke node yang lebih besar indexnya.
Pointer prev : menghadap ke node yang lebih kecil indexnya.
Head & Tail • • Head : menunjuk pada node pertama.
Tail : menunjuk pada node terakhir.
• • Pada node pertama, pointer prev mengarah ke null.
Pada node terakhir, pointer next mengarah ke null.
Data/item Gambaran prev last next
Double Representation } { class Node Object dData; // data item Node next; // pointer next Node prev; // pointer prev …..
Operasi • • Penambahan/penyisipan Penghapusan
Penambahan Node
Penambahan Node • • • • Penambahan di awal Penambahan di akhir Penambahan sebelum node tertentu Penambahan setelah node tertentu
Asumsi awal
Penambahan di Awal • • Pointer bantu : baru Langkah : – Baru.next = head – head.prev = Baru – head = baru
Penambahan di Awal(1) last 14
Penambahan di Awal(2) last 15
Penambahan di Awal(3) last 16
Penambahan di Akhir Asumsi linked list awal : last 17
Penambahan di Akhir 1. Baru.prev = last last 18
Penambahan di Akhir 2. last.next = Baru last 19
Penambahan di Akhir 3. last = Baru last 20
Penambahan Setelah Node x • Pointer bantu : after
Penambahan Setelah Node x Asumsi linked list awal : last 22
Penambahan Setelah Node x 1. Node after; after diarahkan ke posisi node 10, bisa dimulai dari head maupun last last 23
Penambahan Setelah Node x 2. Baru.prev = after last 24
Penambahan Setelah Node x 3. Baru.next = after.next last 25
Penambahan Setelah Node x 4. after.next.prev = Baru last 26
Penambahan Setelah Node x 5. after.next = Baru last 27
Penambahan Setelah Node x Hasil akhir : last 28
Penambahan Sebelum Node x Asumsi linked list awal : last 29
Penambahan Sebelum Node x 1. Node before; before diarahkan ke posisi node 5, bisa dimulai dari head maupun last last 30
Penambahan Sebelum Node x 2. Baru.prev = before.prev
last 31
Penambahan Sebelum Node x 3. Baru.next = before last 32
Penambahan Sebelum Node x 4. before.prev.next = Baru last 33
Penambahan Sebelum Node x 5. before.prev = Baru last 34
Penambahan Sebelum Node x Hasil akhir : last 35
Penghapusan Node
Operasi Hapus Node (Delete) • • • Hapus awal (Delete First) Hapus akhir (Delete Last) Hapus Node x 37
Asumsi Awal Asumsi linked list awal : last 38
Delete First 1. Node hapus; hapus = head; last 39
Delete First 2. head.next.prev = null last 40
Delete First 3. head = hapus.next
last 41
Delete First last 42
Hasil akhir : Delete First last 43
Delete Last Asumsi linked list awal : last 44
Delete Last 1. Node hapus; hapus = last; last 45
Delete Last 2. last.prev.next = null last 46
Delete Last 3. last = hapus.prev
last 47
Delete Last last 48
Hasil akhir : Delete Last last 49
Delete Node x Asumsi linked list awal : Misalkan x = 3 50
Delete Node x 1. Node hapus; hapus diarahkan pada posisi node 3, bisa mulai dari head maupun last last 51
Delete Node x 2. hapus.prev.next = hapus.next; last 52
Delete Node x 3. hapus.next.prev = hapus.prev; last 53
Delete Node x last 54
Circular List
Definisi • Circular List : list yang berbentuk cirrcular/melingkar, node depan terhubung dengan node paling belakang.
Gambaran firstNode a b c d e
Pustaka • Sartaj Sahni, Presentation L5 & L10