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.
Gambaran last Data/item prev next
Double Representation class Node { Object dData; // data item Node next; // pointer next Node prev; // pointer prev ….. }
Operasi Penambahan/penyisipan Penghapusan
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
14 Penambahan di Awal(1) last
15 Penambahan di Awal(2) last
Penambahan di Awal(3) 16 last
17 Penambahan di Akhir Asumsi linked list awal : last
18 Penambahan di Akhir 1. Baru.prev = last last
19 Penambahan di Akhir 2. last.next = Baru last
20 Penambahan di Akhir 3. last = Baru last
Penambahan Setelah Node x Pointer bantu : after
22 Penambahan Setelah Node x Asumsi linked list awal : last
23 Penambahan Setelah Node x 1.Node after; after diarahkan ke posisi node 10, bisa dimulai dari head maupun last last
24 Penambahan Setelah Node x 2. Baru.prev = after last
25 Penambahan Setelah Node x 3. Baru.next = after.next last
26 Penambahan Setelah Node x 4. after.next.prev = Baru last
27 Penambahan Setelah Node x 5. after.next = Baru last
28 Penambahan Setelah Node x Hasil akhir : last
29 Penambahan Sebelum Node x Asumsi linked list awal : last
30 Penambahan Sebelum Node x 1.Node before; before diarahkan ke posisi node 5, bisa dimulai dari head maupun last last
31 Penambahan Sebelum Node x 2. Baru.prev = before.prev last
32 Penambahan Sebelum Node x 3. Baru.next = before last
33 Penambahan Sebelum Node x 4. before.prev.next = Baru last
34 Penambahan Sebelum Node x 5. before.prev = Baru last
35 Penambahan Sebelum Node x Hasil akhir : last
Penghapusan Node
37 Operasi Hapus Node (Delete) Hapus awal (Delete First) Hapus akhir (Delete Last) Hapus Node x
38 Asumsi Awal Asumsi linked list awal : last
39 Delete First 1. Node hapus; hapus = head; last
40 Delete First 2. head.next.prev = null last
41 Delete First 3. head = hapus.next last
42 Delete First last
43 Delete First Hasil akhir : last
44 Delete Last Asumsi linked list awal : last
45 Delete Last 1. Node hapus; hapus = last; last
46 Delete Last 2. last.prev.next = null last
47 Delete Last 3. last = hapus.prev last
48 Delete Last last
49 Delete Last Hasil akhir : last
50 Delete Node x Asumsi linked list awal : Misalkan x = 3 last
51 Delete Node x 1.Node hapus; hapus diarahkan pada posisi node 3, bisa mulai dari head maupun last last
52 Delete Node x 2. hapus.prev.next = hapus.next; last
53 Delete Node x 3. hapus.next.prev = hapus.prev; last
54 Delete Node x last
Circular List
Definisi Circular List : list yang berbentuk cirrcular/melingkar, node depan terhubung dengan node paling belakang.
Gambaran abcde firstNode
Pustaka Sartaj Sahni, Presentation L5 & L10