Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linked List Oleh: Tim Struktur Data IF - UNIKOM.

Presentasi serupa


Presentasi berjudul: "Linked List Oleh: Tim Struktur Data IF - UNIKOM."— Transcript presentasi:

1 Linked List Oleh: Tim Struktur Data IF - UNIKOM

2 PENGERTIAN LINKED LIST
berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung, dinamis dan tidak terbatas. Linked List sering disebut juga Senarai Berantai Linked List saling terhubung dengan bantuan variabel pointer Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa record

3 Array vs Linked List

4 Bentuk Linked List Single Linked List Double Linked List
Circular Linked List Linear Linked List

5 Single Linked List Linked list dengan simpul berisi satu link / pointer yang mengacu ke simpul berikutnya Simpul Single Linked List : Medan Data (Info) Medan Sambungan (next)

6 Deklarasi Linked List (Algoritma)
Type Nama_pointer = ↑Simpul Simpul = Record medan_data : tipedata, medan_sambungan : Nama_pointer EndRecord Nama_var_pointer : Nama_pointer

7 Contoh Deklarasi Linked List
Type Point = ↑Data Data = Record Info : char , Next : Point Endrecord awal, akhir : Point

8 Operasi – operasi Single Linked List
Penciptaan (create) Penyisipan Penghapusan Traversal Pencarian (searching) Pengurutan (sorting) Penghancuran (destroy)

9 Penciptaan awal  nil akhir  nil
Pointer awal dan akhir diberi harga nil/NULL awal akhir awal  nil akhir  nil

10 Penyisipan di Depan - Jika List kosong {awal = nil} alloc(baru)
baru↑.next  nil baru↑.info  1 baru 1 akhir awal awal  baru baru 1 akhir  baru

11 Penyisipan di Depan (lanjutan)
- Jika List tidak kosong {Awal ≠ Nil} Misalkan mula-mula keadaan List memiliki dua simpul: akhir awal 2 3 Satu simpul akan disisipkan di depan alloc(baru) baru 1 baru↑.info  1

12 Penyisipan di Depan (lanjutan)
Simpul baru akan disisipkan di depan simpul yang ditunjuk oleh pointer awal awal 2 akhir 3 baru↑.next  awal baru 1

13 Penyisipan di Depan (lanjutan)
Setelah simpul baru tersambung dengan simpul pertama dari list, lalu pindahkan pointer awal ke simpul yang baru 2 3 baru 1 akhir awal awal  baru

14 Penyisipan di Depan (lanjutan)
Keadaan Linked List setelah terjadi penyisipan di depan/di awal: awal 2 3 akhir baru 1

15 Algoritma Penyisipan di depan

16 Penyisipan di Belakang
- Jika List kosong {awal = nil} {sama seperti pada penyisipan di depan} - Jika List tidak kosong {awal ≠ nil} Misalkan mula-mula List memiliki dua simpul: awal 3 2 akhir Simpul yang akan disisipkan: alloc(baru) baru↑.next  nil baru 1 baru↑.info  1

17 Penyisipan di Belakang (lanjutan)
Simpul baru akan disisipkan setelah simpul yang ditunjuk pointer akhir awal akhir akhir↑.next baru 3 2 baru 1

18 Penyisipan di Belakang (lanjutan)
Medan sambungan (next) dari simpul terakhir disambungkan ke simpul yang baru. awal 3 2 baru 1 akhir akhir  baru

19 Penyisipan di Belakang (lanjutan)
Keadaan Linked List setelah terjadi penyisipan satu simpul di belakang: awal 3 2 akhir 1 baru

20 Algoritma Penyisipan di belakang

21 Penyisipan di Tengah awal akhir baru
- Jika List kosong {awal = nil} {sama seperti pada penyisipan di depan} - Jika List tidak kosong {awal ≠ Nil} awal 2 5 4 akhir 3 Misal akan menyisipkan angka 1 setelah angka 4 alloc(baru) baru 1 baru↑.info  1

22 Penyisipan di Tengah (lanjutan)
Angka 4 ditemukan dengan cara mencari mulai dari simpul pertama sampai simpul yang ada angka 4 ditemukan (metode sequential search). Misalkan pointer yang mencari angka 4 adalah pointer bantu, berarti pointer bantu akan menunjuk simpul ke-2 karena simpul tersebut berisi data yang dicari. baru 1 awal 2 5 4 akhir 3 bantu bantu baru↑.next  bantu↑.next

23 Penyisipan di Tengah (lanjutan)
Setelah simpul baru terhubung ke simpul setelah simpul yang ada angka 4, maka sambungkan medan sambungan (next) dari simpul yang ditunjuk pointer bantu ke simpul baru awal bantu akhir 3 4 2 5 bantu↑.next  baru baru 1

24 Penyisipan di Tengah (lanjutan)
Keadaan Linked List setelah terjadi penyisipan satu simpul di tengah: 2 akhir 5 awal 4 3 bantu 1 baru

25 Penghapusan di Depan Proses menghapus satu simpul di depan/di awal Linked List (menghapus simpul yang ditunjuk oleh pointer awal) - Keadaan List memiliki satu simpul {awal = akhir} awal akhir 1

26 Penghapusan di Depan (lanjutan)
1 awal akhir phapus phapus  awal elemen  phapus↑.info elemen awal akhir awal  nil akhir  nil dealloc(phapus) 1 phapus Jika terjadi penghapusan pada Linked List yang hanya memiliki satu simpul, maka Linked List akan kosong

27 Penghapusan di Depan (lanjutan)
- Keadaan List memiliki lebih dari satu simpul {awal ≠ akhir} Misalkan mula-mula Linked List memiliki dua simpul awal 2 3 akhir

28 Penghapusan di Depan (lanjutan)
awal 2 3 akhir phapus phapus  awal elemen elemen  phapus↑.info awal  awal↑.next awal 2 3 phapus akhir dealloc(phapus)

29 Penghapusan di Depan (lanjutan)
Keadaan Linked List setelah terjadi penghapusan di depan/di awal awal 3 akhir 2 phapus

30 Penghapusan di Belakang
Proses menghapus satu simpul di belakang/di akhir Linked List (menghapus simpul yang ditunjuk oleh pointer akhir) - Keadaan List memiliki satu simpul (awal = akhir) {sama seperti penghapusan di depan} - Keadaan List memiliki lebih dari satu simpul {awal ≠ akhir} Misalkan mula-mula Linked List memiliki tiga simpul awal 1 3 2 akhir

31 Penghapusan di Belakang (lanjutan)
awal 1 3 akhir 2 elemen phapus phapus  awal elemen  akhir↑.info

32 Penghapusan di Belakang (lanjutan)
akhir  phapus awal 1 3 2 akhir phapus phapus phapus  phapus↑.next while (phapus↑.next ≠ akhir) do phapus  phapus↑.next endwhile

33 Penghapusan di Belakang (lanjutan)
awal 1 3 phapus 2 akhir akhir↑.next  nil dealloc(phapus)

34 Penghapusan di Belakang (lanjutan)
Keadaan Linked List setelah terjadi penghapusan di belakang/di akhir awal 1 2 akhir phapus phapus 3

35 Penghapusan di Tengah awal akhir
Proses menghapus satu simpul di tengah Linked List (menghapus simpul yang ditunjuk oleh pointer phapus) - Keadaan List memiliki satu simpul (awal = akhir) {sama seperti penghapusan di depan} - Keadaan List memiliki lebih dari satu simpul (awal ≠ akhir) Misalkan mula-mula List memiliki empat simpul, dan akan menghapus simpul ketiga awal 2 5 4 akhir 3

36 Penghapusan di Tengah (lanjutan)
posisihapus=2 posisihapus=1 posisihapus=3 awal 2 5 4 akhir 3 phapus phapus

37 Penghapusan di Tengah (lanjutan)
awal 2 5 4 phapus akhir 3 posisihapus=3 bantu elemen elemen  phapus↑.info bantu  awal while (bantu↑.next ≠ phapus) do bantu  bantu↑.next endwhile

38 Penghapusan di Tengah (lanjutan)
awal 2 5 4 phapus akhir 3 posisihapus=3 bantu bantu↑.next  phapus↑.next awal 2 5 4 phapus akhir 3 posisihapus=3 bantu dealloc(phapus)

39 Penghapusan di Tengah (lanjutan)
posisihapus=1 posisihapus=2 posisihapus=3 phapus phapus awal 5 4 akhir 3 bantu awal 5 4 akhir 3 2

40 Latihan Terdapat linked list nama: Ana, Budi, Joko ingin disisipkan nama “Caca” setelah nama “Budi” Buatlah algoritmanya!

41 TUGAS KELOMPOK Buat program menggunakan tipe data pointer dalam bentuk single linked list. Operasi-operasi yang harus ada: Operasi Penciptaan Operasi Penyisipan di Depan Operasi Penyisipan di Belakang Operasi Penghapusan di Depan Operasi Penghapusan di Belakang Dikumpulkan dalam bentuk makalah dan program.

42 TUGAS KELOMPOK Contoh program: Menu Pilihan: Penyisipan Penghapusan
Menu penyisipan: Menu Penghapusan: Penyisipan di depan Penghapusan di depan Penyisipan di belakang Penghapusan di belakang Penyisipan di tengah Penghapusan di tengah

43 See u next week...

44


Download ppt "Linked List Oleh: Tim Struktur Data IF - UNIKOM."

Presentasi serupa


Iklan oleh Google