Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Linear List
2
Materi Array Linked List Stack Queue
3
Array Penjelasan ada di modul 2
4
Definisi Linked list : struktur data yang dibangun dari satu atau lebih node. Node terdiri dari dua bagian : data field dan pointer. Data field: bagian dari list node untuk menyimpan data. Pointer : bagian dari list node untuk menunjuk node berikutnya.
5
Linked List c a e d b firstNode Pointer dari node e adalah null
6
LinkedList vs Array Misal L=(a,b,c,d,e) a b c d e c a e d b
Array representation c a e d b Linked list representation
7
Node Link atau pointer data field
8
Pointer Bantu Head/First : Pointer yang menunjuk ke node paling depan.
Tail/Last : Pointer yang menunjuk ke node paling belakang.
9
Single Linked List
10
Contoh Single Linked List
a b c d e null Node Node1 Node Node Node4
11
Definisi Linked list yang memiliki satu pointer.
Pointer bantu : firstnode
12
FirstNode a b c d e null firstNode
13
Head & Tail a b c d e null Head last
14
Single Representation
class ChainNode { Object element; ChainNode next; // constructors come here } next element
15
Constructors Of ChainNode
null ChainNode() {} null element ChainNode(Object element) {this.element = element;} ChainNode(Object element, ChainNode next) {this.element = element; this.next = next;} next element
16
Operasi Pengaksesan (get) Penghapusan (remove)
Penambahan/penyisipan (add)
17
Pengaksesan Node
18
get(0) firstnode => menunjuk pointer pada node0
firstnode.data => mengakses data pada node0 (a) a b c d e null firstNode
19
get(1) firstnode.next => menunjuk pointer pada node1
firstnode.next.data => mengakses data pada node1 (b) a b c d e null firstNode
20
get(2) firstnode.next.next => menunjuk pointer pada node2
firstnode.next.next.data => mengakses data pada node2 (c) a b c d e null firstNode
21
get(?) firstnode.next.next.next.next => ???????
22
Penghapusan Node
23
Penghapusan Node Langkah-langkah :
Letakkan beforenode pada posisi sama dengan firstnode. Cek index yang dimasukkan lakukan pergeseran pada beforeNode untuk mencari node dengan index yang dimaksud. Jika ketemu : hapus node yang dimaksud kemudian arahkan pointer dari node pada index-1 ke node pada index+1. Jika node yang dihapus berada diawal maka jangan lupa untuk mengarahkan firstnode ke node pada index+1. Jika node yang dihapus berada pada index terakhir maka pointer dari node pada index-1 langsung diarahkan ke null
24
Penghapusan Node 0 Remove(0) firstnode=firstnode.next a b c d e
null firstNode b c d e null firstNode
25
Penghapusan Node 2 Misal : Remove(2) a b c d e firstNode null
Node yang akan dihapus
26
Penghapusan Node 2 Membutuhkan pointer bantu : BeforeNode, untuk menunjuk node sebelah kiri node yang akan dihapus. beforeNode=firstnode.next firstNode b beforeNode c null a b c d e
27
Penghapusan Node 2 beforeNode.next = beforeNode.next.next a b c d e
null firstNode beforeNode
28
Penambahan Node
29
Penambahan Node Pointer bantu :
newNode (menunjuk node yang akan ditambahkan) beforeNode (menunjuk node pada index-1)
30
Penambahan dari Depan Add(0,’f’) a b c d e firstNode f newNode
ChainNode newNode = new ChainNode(new Character(‘f’), firstNode); a b c d e null firstNode f newNode
31
Penambahan dari Depan firstNode = newNode a b c d e firstNode f
null firstNode f newNode
32
Penambahan di Tengah (Insert)
Add(3,’f’) ChainNode newNode = new ChainNode(new Character(‘f’),beforeNode.next); beforeNode.next = newNode; a b c d e null firstNode f newNode beforeNode c
33
Double Linked List
34
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.
35
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.
36
Gambaran last Data/item prev next
37
Double Representation
class Node { Object dData; // data item Node next; // pointer next Node prev; // pointer prev ….. }
38
Operasi Penambahan/penyisipan Penghapusan
39
Penambahan Node
40
Penambahan Node Penambahan di awal Penambahan di akhir
Penambahan sebelum node tertentu Penambahan setelah node tertentu
41
Asumsi awal
42
Penambahan di Awal Pointer bantu : baru Langkah : Baru.next = head
head.prev = Baru head = baru
43
Penambahan di Awal(1) last
44
Penambahan di Awal(2) last
45
Penambahan di Awal(3) last
46
Penambahan di Akhir Asumsi linked list awal : last
47
Penambahan di Akhir 1. Baru.prev = last last
48
Penambahan di Akhir 2. last.next = Baru last
49
Penambahan di Akhir 3. last = Baru last
50
Penambahan Setelah Node x
Pointer bantu : after
51
Penambahan Setelah Node x
Asumsi linked list awal : last
52
Penambahan Setelah Node x
Node after; after diarahkan ke posisi node 10, bisa dimulai dari head maupun last last
53
Penambahan Setelah Node x
2. Baru.prev = after last
54
Penambahan Setelah Node x
3. Baru.next = after.next last
55
Penambahan Setelah Node x
4. after.next.prev = Baru last
56
Penambahan Setelah Node x
5. after.next = Baru last
57
Penambahan Setelah Node x
Hasil akhir : last
58
Penambahan Sebelum Node x
Asumsi linked list awal : last
59
Penambahan Sebelum Node x
Node before; before diarahkan ke posisi node 5, bisa dimulai dari head maupun last last
60
Penambahan Sebelum Node x
2. Baru.prev = before.prev last
61
Penambahan Sebelum Node x
3. Baru.next = before last
62
Penambahan Sebelum Node x
4. before.prev.next = Baru last
63
Penambahan Sebelum Node x
5. before.prev = Baru last
64
Penambahan Sebelum Node x
Hasil akhir : last
65
Penghapusan Node
66
Operasi Hapus Node (Delete)
Hapus awal (Delete First) Hapus akhir (Delete Last) Hapus Node x
67
Asumsi Awal Asumsi linked list awal : last
68
Delete First 1. Node hapus; hapus = head; last
69
Delete First 2. head.next.prev = null last
70
Delete First 3. head = hapus.next last
71
Delete First last
72
Delete First Hasil akhir : last
73
Delete Last Asumsi linked list awal : last
74
Delete Last 1. Node hapus; hapus = last; last
75
Delete Last 2. last.prev.next = null last
76
Delete Last 3. last = hapus.prev last
77
Delete Last last
78
Delete Last Hasil akhir : last
79
Delete Node x Asumsi linked list awal : Misalkan x = 3 last last
80
Delete Node x Node hapus;
hapus diarahkan pada posisi node 3, bisa mulai dari head maupun last last
81
Delete Node x 2. hapus.prev.next = hapus.next; last
82
Delete Node x 3. hapus.next.prev = hapus.prev; last
83
Delete Node x last
84
Circular List
85
Definisi Circular List : list yang berbentuk cirrcular/melingkar, node depan terhubung dengan node paling belakang.
86
Gambaran a b c d e firstNode
87
Pustaka Sartaj Sahni, Presentation L5 & L10
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.