Linked List

980 views

Published on

Linked List

Published in: Engineering
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
980
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
44
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Linked List

  1. 1. Linked List Sherly Christina, S.Kom., M.Kom 1
  2. 2. List Linier Tunggal  Sebuah list dimana elemennya hanya menyimpan pointer/informasi elemen setelahnya 2
  3. 3. List Linier Ganda  Disebut juga two way chain
  4. 4. List Linier Ganda  Sebuah List yang elemennya menyimpan informasi elemen sebelumnya dan informasi elemen setelahnya
  5. 5. Sirkuler Link list Tunggal
  6. 6. Sirkuler Link list Ganda
  7. 7. Pendefinisian List Type Data_type = …; Key_type = …; nodePtr = ^node; node = record key : key_type; data : data_type; next : nodePtr; end; Linked_list = record First : nodePtr; end; 7
  8. 8. Operasi Dasar 1. 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
  9. 9. Operasi Dasar 4. 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 simpul 6. Pencarian simpul tertentu (searchNode)9
  10. 10. 1. Penciptaan dan Penghancuran simpul 10
  11. 11. 2. Inisialisasi dan Memeriksa Linked List Kosong  Procedure ini menghasilkan linked list kosong ditunjuk L.  Function untuk memeriksa linked list kosong 11
  12. 12. 3. Penyisipan Simpul Pertama  menyisipkan elemen baru (berupa alamat) sebagai elemen pertama linked list. 12
  13. 13. 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
  14. 14. 4. Penyisipan setelah simpul tertentu  menyisipkan elemen baru (berupa alamatnya) sebagai elemen setelah elemen tertentu di linked list. 14
  15. 15. 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
  16. 16. 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
  17. 17. 5. Penyisipan sebagai simpul terakhir 17  Langkah-langkah agar rantai linked list tidak terputus: 1.Telusuri linked list sehingga mendapatkan elemen last 2. Lakukan insertaAfter setelah elemen last
  18. 18. 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 elemen 2. L.First mencatat elemen selanjutnya setelah L.First 18
  19. 19. 6. Penghapusan simpul pertama  Prosedur Dispose akan mengembalikan elemen dinamis ke memori sehingga dapat digunakan kembali. 19
  20. 20. 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
  21. 21. 7. Penghapusan simpul setelah simpul tertentu 21
  22. 22. 8. Penghapusan simpul terakhir  Menghapus elemen pertama linked list.  Sebelum memanggil prosedur ini, harus dipastikan linked list tidak kosong. 22
  23. 23. 8. Penghapusan simpul terakhir Procedure deleteLast(Var L : linked_list); Var P, Last, precLast : nodePtr; Begin If (L.First <> nil) then Begin Last := L.First precLast := Nil; while (Last^.next <> nil) then Begin precLast := Last; Last := Last^.next; End; P := Last; If (precLast = nil) then L.First := nil Else precLast^.next := nil; Dispose(P); End; End; 23
  24. 24. 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 sebelumnya 2. Setelah ditemukan maka hapus elemen tertentu dengan · Mengisolasi elemen tertentu · Menghubungkan elemen sebelumnya dengan elemen setelah elemen tertentu · Dispose elemen tertentu. 24
  25. 25. Penelusuran seluruh simpul  Linked list berisi sekumpulan elemen.  Dalam beberapa operasi sering diperlukan pemrosesan semua elemen linked list. 1. Init adalah prosedur untuk persiapan pemrosesan 2.Visit (P) adalah prosedur pemrosesan simpul yang saat itu (dikunjungi atau ditunjuk) 3.Terminate adalah prosedur pemrosesan akhir setelah penelusuran 25
  26. 26. Penelusuran dengan While.. Do... Procedure ListTraversal(L : linked_list); Var P : nodePtr; Begin Init; P := L.First; While (P <> nil ) do Begin Visit (P); P := P^.next; End; Terminate; End; 26
  27. 27. Penelusuran dengan Repeat... Until... Procedure ListTraversal (L :linked list); Var P : nodePtr; Begin If (L.First = nil) then Message_linked list_Kosong; Else Begin Init; P := L.First; Repeat Proses(P); P := P^.next; Until (P = nil); Terminasi; End; End; 27
  28. 28. Pencarian simpul  Pencarian pada linked list hanya dapat dilakukan secara sekuen (berturutan).  Pencarian merupakan modifikasi dari penelurusan dengan berhenti pada simpul tertentu. 28
  29. 29. Pencarian simpul Function 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) do Begin If (P^.key = key) then Found := true else P := P^.next; End; ListSearch := Found; End; 29
  30. 30. Operasi Terhadap Linked list 1. Penghapusan linked list 2. Inverse 3. Penyambungan 4. Panjang linked list
  31. 31. Penghapusan linked list  Merupakan modifikasi penelusuran linked list dengan mengisolasi lebih dulu elemen yang akan dihapus.
  32. 32. Inverse linked list  Membalik linked list sehingga yang semula elemen terakhir menjadi elemen pertama dan sebaliknya.
  33. 33. Penyambungan dua linked list  Menyambungkan dua link list sehingga L3 akan berisi L1 disambung L2.
  34. 34. Panjang linked list  Fungsi ini mengirim jumlah elemen di linked list.
  35. 35. 35

×