double link list

Download Report

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