Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linear List.

Presentasi serupa


Presentasi berjudul: "Linear List."— Transcript presentasi:

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


Download ppt "Linear List."

Presentasi serupa


Iklan oleh Google