linked list

35
Linked List Sherly Christina, S.Kom., M.Kom 1

Upload: sherly-uda

Post on 17-Jun-2015

691 views

Category:

Engineering


0 download

DESCRIPTION

Linked List

TRANSCRIPT

Page 1: Linked List

Linked List

Sherly Christina, S.Kom., M.Kom

1

Page 2: Linked List

List Linier Tunggal Sebuah list dimana elemennya hanya

menyimpan pointer/informasi elemen setelahnya

2

Page 3: Linked List

List Linier Ganda Disebut juga two way chain

Page 4: Linked List

List Linier Ganda Sebuah List yang elemennya menyimpan informasi

elemen sebelumnya dan informasi elemen setelahnya

Page 5: Linked List

Sirkuler Link list Tunggal

Page 6: Linked List

Sirkuler Link list Ganda

Page 7: Linked List

Pendefinisian ListType

Data_type = …;Key_type = …;nodePtr = ^node;

node = recordkey : key_type;data : data_type;next : nodePtr;end;

Linked_list = recordFirst : nodePtr;

end;

7

Page 8: Linked List

Operasi Dasar1. Penciptaan dan penghancuran simpul (buildNode dan

destroyNode)2. Inisialisasi dan fungsi pemeriksaan linked list kosong

(initL dan esEmptyL)3. Penyisipan simpul ke linked list

· Penyisipan sebagai simpul pertama (insertFirst)· Penyisipan setelah simpul tertentu (insertAfter)· Penyisipan sebagai simpul terakhir (insertLast)· Penyisipan sebelum simpul tertentu (insertBefore)

8

Page 9: Linked List

Operasi Dasar4. Penghapusan variable dinamis (simpul suatu

linked list)· Penghapusan simpul pertama (deleteFirst)· Penghapusan simpul terakhir (deleteLast)· Penghapusan setelah simpul tertentu

(deleteAfter)· Penghapusan simpul tertentu (deleteNode

dan deleteKNode)5. Transversal atau penelusuran seluruh simpul6. Pencarian simpul tertentu (searchNode)

9

Page 10: Linked List

1. Penciptaan dan Penghancuran simpul

10

Page 11: Linked List

2. Inisialisasi dan Memeriksa Linked List Kosong

Procedure ini menghasilkan linked list kosong ditunjuk L.

Function untuk memeriksa linked list kosong

11

Page 12: Linked List

3. Penyisipan Simpul Pertama

menyisipkan elemen baru (berupa alamat) sebagai elemen pertama linked list.

12

Page 13: Linked List

3. Penyisipan Simpul Pertama Langkah-langkah agar

rantai linked list tidak terputus:

1. Pointer next elemen baru (A) menunjuk dulu elemen pertama dari linked list

2. L.First menunjuk ke elemen baru

13

Page 14: Linked List

4. Penyisipan setelah simpul tertentu menyisipkan elemen

baru (berupa alamatnya) sebagai elemen setelah elemen tertentu di linked list.

14

Page 15: Linked List

4. Penyisipan setelah simpul tertentu Langkah-langkah agar

rantai linked list tidak terputus:

1. Pointer next elemen baru (A) menunjuk dulu elemen setelah (E)elemen tertentu (D)

2. Pointer next elemen sebelumnya (D)menunjuk ke elemen baru (A)

15

Page 16: Linked List

5. Penyisipan sebagai simpul terakhir Menyisipkan elemen baru

(A) (berupa alamatnya) sehingga elemen tersebut akan menjadi elemen terakhir linked list.

Untuk penyisipan sebagai elemen terakhir diperlukan alamat elemen terakhir (last) (E). Untuk menemukan last diperlukan penelusuran sehingga terpenuhi last^.next = nil

16

Page 17: Linked List

5. Penyisipan sebagai simpul terakhir

17

Langkah-langkah agar rantai linked list tidak terputus:1. Telusuri linked list sehingga mendapatkan elemen last2. Lakukan insertaAfter setelah elemen last

Page 18: Linked List

6. Penghapusan simpul pertama Operasi ini akan menghapus

elemen pertama linked list. Langkah-langkah agar rantai

linked list tidak terputus:1. Element First dicatat di

suatu elemen2. L.First mencatat elemen

selanjutnya setelah L.First

18

Page 19: Linked List

6. Penghapusan simpul pertama Prosedur Dispose akan

mengembalikan elemen dinamis ke memori sehingga dapat digunakan kembali.

19

Page 20: Linked List

7. Penghapusan simpul setelah simpul tertentu Menghapus elemen

setelah elemen tertentu. Langkah-langkah agar

rantai linked list tidak terputus:

1. Elemen tertentu yang dihapus di-cut

2. Sambungkan ke elemen berikutnya

20

Page 21: Linked List

7. Penghapusan simpul setelah simpul tertentu

21

Page 22: Linked List

8. Penghapusan simpul terakhir Menghapus elemen

pertama linked list. Sebelum memanggil

prosedur ini, harus dipastikan linked listtidak kosong.

22

Page 23: Linked List

8. Penghapusan simpul terakhirProcedure deleteLast(Var L :

linked_list);Var

P, Last, precLast : nodePtr;Begin

If (L.First <> nil) thenBegin

Last := L.FirstprecLast := Nil;while (Last^.next <> nil) thenBegin

precLast := Last;Last := Last^.next;

End;

P := Last;If (precLast = nil) then

L.First := nilElse

precLast^.next := nil;Dispose(P);

End;End;

23

Page 24: Linked List

Penghapusan simpul tertentu Menghapus elemen tertentu. Terdapat dua versi penghapusan ini,

yaitu : Elemen tertentu didasarkan pada alamat elemen Elemen tertentu didasarkan pada key

Untuk penghapusan elemen harus terlebih dulu diketahui elemen sebelum elemen tertentu tersebut dengan pencarian yang sekaligus mencatat elemen sebelumnya.

Langkah-langkah agar rantai linked list tidak terputus:1. Menelusuri apakah terdapat elemen tertentu tersebut sekaligus

mencatat elemen sebelumnya2. Setelah ditemukan maka hapus elemen tertentu dengan· Mengisolasi elemen tertentu· Menghubungkan elemen sebelumnya dengan elemen setelah

elemen tertentu· Dispose elemen tertentu.

24

Page 25: Linked List

Penelusuran seluruh simpul Linked list berisi sekumpulan elemen. Dalam beberapa operasi sering diperlukan

pemrosesan semua elemen linked list. 1. Init adalah prosedur untuk persiapan pemrosesan2. Visit (P) adalah prosedur pemrosesan simpul yang saat

itu (dikunjungi atau ditunjuk)3. Terminate adalah prosedur pemrosesan akhir setelah

penelusuran

25

Page 26: Linked List

Penelusuran dengan While.. Do...Procedure ListTraversal(L : linked_list);Var

P : nodePtr;Begin

Init;P := L.First;While (P <> nil ) doBegin

Visit (P);P := P^.next;

End;Terminate;

End;

26

Page 27: Linked List

Penelusuran dengan Repeat... Until...Procedure ListTraversal (L :linked list);Var

P : nodePtr;Begin

If (L.First = nil) thenMessage_linked list_Kosong;Else

BeginInit;P := L.First;Repeat

Proses(P);P := P^.next;Until (P = nil);

Terminasi;End;

End;

27

Page 28: Linked List

Pencarian simpul Pencarian pada linked list hanya dapat dilakukan

secara sekuen (berturutan). Pencarian merupakan modifikasi dari penelurusan

dengan berhenti pada simpul tertentu.

28

Page 29: Linked List

Pencarian simpulFunction ListSearch(L : linked_list, k : key_type, var P : nodePtr) : Boolean;Var

Found : Boolean;Begin

P := L.First;Found := false;While (P <> nil) and (not Found) doBegin

If (P^.key = key) then Found := trueelse

P := P^.next;End;ListSearch := Found;

End;29

Page 30: Linked List

Operasi Terhadap Linked list

1. Penghapusan linked list2. Inverse3. Penyambungan4. Panjang linked list

Page 31: Linked List

Penghapusan linked list Merupakan modifikasi

penelusuran linked list dengan mengisolasi lebih dulu elemen yang akan dihapus.

Page 32: Linked List

Inverse linked list Membalik linked list

sehingga yang semula elemen terakhir menjadi elemen pertama dan sebaliknya.

Page 33: Linked List

Penyambungan dua linked list

Menyambungkan dua link list sehingga L3 akan berisi L1 disambung L2.

Page 34: Linked List

Panjang linked list

Fungsi ini mengirim jumlah elemen di linked list.

Page 35: Linked List

35