Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linear List Materi Array Linked List Stack Queue.

Presentasi serupa


Presentasi berjudul: "Linear List Materi Array Linked List Stack Queue."— Transcript presentasi:

1

2 Linear List

3 Materi Array Linked List Stack Queue

4 Array Penjelasan ada di modul 2

5 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.

6 Linked List firstNode caedb Pointer dari node e adalah null

7 LinkedList vs Array Misal L=(a,b,c,d,e) abcdecaedb Array representation Linked list representation

8 Node Link atau pointer data field

9 Pointer Bantu Head/First : Pointer yang menunjuk ke node paling depan. Tail/Last : Pointer yang menunjuk ke node paling belakang.

10 Single Linked List

11 Contoh Single Linked List abcde null Node0 Node1Node2 Node3 Node4

12 Definisi Linked list yang memiliki satu pointer. Pointer bantu : firstnode

13 FirstNode abcde null firstNode

14 Head & Tail abcde null Headlast

15 Single Representation class ChainNode { Object element; ChainNode next; // constructors come here } next element

16 Constructors Of ChainNode ChainNode() {} null element next element ChainNode(Object element) {this.element = element;} ChainNode(Object element, ChainNode next) {this.element = element; this.next = next;}

17 Operasi Pengaksesan (get) Penghapusan (remove) Penambahan/penyisipan (add)

18 Pengaksesan Node

19 firstnode=> menunjuk pointer pada node0 firstnode.data => mengakses data pada node0 (a) get(0) abcde null firstNode

20 get(1) firstnode.next=> menunjuk pointer pada node1 firstnode.next.data => mengakses data pada node1 (b) abcde null firstNode

21 get(2) firstnode.next.next => menunjuk pointer pada node2 firstnode.next.next.data => mengakses data pada node2 (c) abcde null firstNode

22 get(?) firstnode.next.next.next.next => ???????

23 Penghapusan Node

24 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

25 Penghapusan Node 0 Remove(0) firstnode=firstnode.next abcde null firstNode bcde null firstNode

26 Penghapusan Node 2 Misal : Remove(2) abcde null firstNode Node yang akan dihapus

27 c c Penghapusan Node 2 Membutuhkan pointer bantu : BeforeNode, untuk menunjuk node sebelah kiri node yang akan dihapus. beforeNode=firstnode.next abcde null firstNode b beforeNode

28 Penghapusan Node 2 beforeNode.next = beforeNode.next.next a b cde null firstNode beforeNode

29 Penambahan Node

30 Pointer bantu : – newNode (menunjuk node yang akan ditambahkan) – beforeNode (menunjuk node pada index-1)

31 Penambahan dari Depan Add(0,’f’) ChainNode newNode = new ChainNode(new Character(‘f’), firstNode); abcde null firstNode f newNode

32 Penambahan dari Depan firstNode = newNode abcde null firstNode f newNode

33 Penambahan di Tengah (Insert) Add(3,’f’) ChainNode newNode = new ChainNode(new Character(‘f’),beforeNode.next); beforeNode.next = newNode; abcde null firstNode f newNode beforeNode c

34 Double Linked List

35 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.

36 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.

37 Gambaran last Data/item prev next

38 Double Representation class Node { Object dData; // data item Node next; // pointer next Node prev; // pointer prev ….. }

39 Operasi Penambahan/penyisipan Penghapusan

40 Penambahan Node

41 Penambahan di awal Penambahan di akhir Penambahan sebelum node tertentu Penambahan setelah node tertentu

42 Asumsi awal

43 Penambahan di Awal Pointer bantu : baru Langkah : – Baru.next = head – head.prev = Baru – head = baru

44 43 Penambahan di Awal(1) last

45 44 Penambahan di Awal(2) last

46 Penambahan di Awal(3) 45 last

47 46 Penambahan di Akhir Asumsi linked list awal : last

48 47 Penambahan di Akhir 1. Baru.prev = last last

49 48 Penambahan di Akhir 2. last.next = Baru last

50 49 Penambahan di Akhir 3. last = Baru last

51 Penambahan Setelah Node x Pointer bantu : after

52 51 Penambahan Setelah Node x Asumsi linked list awal : last

53 52 Penambahan Setelah Node x 1.Node after; after diarahkan ke posisi node 10, bisa dimulai dari head maupun last last

54 53 Penambahan Setelah Node x 2. Baru.prev = after last

55 54 Penambahan Setelah Node x 3. Baru.next = after.next last

56 55 Penambahan Setelah Node x 4. after.next.prev = Baru last

57 56 Penambahan Setelah Node x 5. after.next = Baru last

58 57 Penambahan Setelah Node x Hasil akhir : last

59 58 Penambahan Sebelum Node x Asumsi linked list awal : last

60 59 Penambahan Sebelum Node x 1.Node before; before diarahkan ke posisi node 5, bisa dimulai dari head maupun last last

61 60 Penambahan Sebelum Node x 2. Baru.prev = before.prev last

62 61 Penambahan Sebelum Node x 3. Baru.next = before last

63 62 Penambahan Sebelum Node x 4. before.prev.next = Baru last

64 63 Penambahan Sebelum Node x 5. before.prev = Baru last

65 64 Penambahan Sebelum Node x Hasil akhir : last

66 Penghapusan Node

67 66 Operasi Hapus Node (Delete) Hapus awal (Delete First) Hapus akhir (Delete Last) Hapus Node x

68 67 Asumsi Awal Asumsi linked list awal : last

69 68 Delete First 1. Node hapus; hapus = head; last

70 69 Delete First 2. head.next.prev = null last

71 70 Delete First 3. head = hapus.next last

72 71 Delete First last

73 72 Delete First Hasil akhir : last

74 73 Delete Last Asumsi linked list awal : last

75 74 Delete Last 1. Node hapus; hapus = last; last

76 75 Delete Last 2. last.prev.next = null last

77 76 Delete Last 3. last = hapus.prev last

78 77 Delete Last last

79 78 Delete Last Hasil akhir : last

80 79 Delete Node x Asumsi linked list awal :  Misalkan x = 3 last

81 80 Delete Node x 1.Node hapus; hapus diarahkan pada posisi node 3, bisa mulai dari head maupun last last

82 81 Delete Node x 2. hapus.prev.next = hapus.next; last

83 82 Delete Node x 3. hapus.next.prev = hapus.prev; last

84 83 Delete Node x last

85 Circular List

86 Definisi Circular List : list yang berbentuk cirrcular/melingkar, node depan terhubung dengan node paling belakang.

87 Gambaran abcde firstNode

88 Pustaka Sartaj Sahni, Presentation L5 & L10


Download ppt "Linear List Materi Array Linked List Stack Queue."

Presentasi serupa


Iklan oleh Google