STRUKTUR DATA LINKED LIST Pertemuan 7 LINEAR LIST

  • Slides: 33
Download presentation
STRUKTUR DATA LINKED LIST Pertemuan 7

STRUKTUR DATA LINKED LIST Pertemuan 7

LINEAR LIST (Daftar Linier) l l Daftar linier (Linear List) adalah suatu struktur data

LINEAR LIST (Daftar Linier) l l Daftar linier (Linear List) adalah suatu struktur data umum yang terbentuk dari barisan hingga (yang terurut) dari satuan data, atau pun dari record. Elemen dari daftar linier disebut simpul atau node. Daftar ini disebut linier karena susunan elemennya adalah linier, yaitu bahwa bagi setiap elemen selalu ada elemen setelah dan sebelumnya, kecuali pada elemen pertama dan terakhir. Banyaknya simpul dalam suatu daftar linier dapat berubah, berbeda dengan array yang jumlah elemennya selalu tetap.

Struktur mana yang Linier? A B C

Struktur mana yang Linier? A B C

LINKED LIST (Daftar Berkait) l l l Daftar berkait setiap elemen memiliki pointer (penunjuk)

LINKED LIST (Daftar Berkait) l l l Daftar berkait setiap elemen memiliki pointer (penunjuk) ke satu atau beberapa elemen lain. Pointer/Penunjuk = penyimpan alamat Singly Linked List atau One-Way List setiap elemen memiliki pointer (penunjuk) ke satu elemen lain, biasanya elemen setelahnya. Doubly Linked List setiap elemen memiliki pointer (penunjuk) ke 2 elemen lain, biasanya elemen sebelum dan sesudahnya.

LINKED LIST LAINNYA START Daftar Berkait Tunggal Sirkuler (Circular Singly-Linked List) START Daftar Berkait

LINKED LIST LAINNYA START Daftar Berkait Tunggal Sirkuler (Circular Singly-Linked List) START Daftar Berkait Ganda Sirkuler (Circular Doubly-Linked List)

LINKED LIST LAINNYA List dengan hirarki START ANA K Struktur Pohon ANA K ORT

LINKED LIST LAINNYA List dengan hirarki START ANA K Struktur Pohon ANA K ORT U ANA K

LINKED LIST LAINNYA List dengan hirarki START ANAK SA ANAK U SA D A

LINKED LIST LAINNYA List dengan hirarki START ANAK SA ANAK U SA D A AR ANAK A AR UD ORTU A RA A D ANAK ORTU R DA U SA Struktur Sisir (? ? ) RA A UD A S RA A UD SA

Single atau Double Link? l Perbandingan Single Link: - Keuntungan: Hemat memori, sederhana -

Single atau Double Link? l Perbandingan Single Link: - Keuntungan: Hemat memori, sederhana - Kerugian: Menelusuri list hanya satu arah Double link: - Keuntungan: Dapat menelusuri list secara bolak-balik - Kerugian: Perlu memori lebih, penanganan lebih rumit l Pertanyaan: Kapan menggunakan struktur yang Single Link (One way) dan Double Link (Two way)? Jawaban: Jika proses perlu melakukan banyak kunjungan list dengan arah fleksibel (bolak-balik) maka sebaiknya gunakan double link agar proses lebih cepat. Jika proses hanya melakukan penelusuran satu arah terhadap list, gunakan single list untuk menghemat memori.

Implementasi Linked-List dengan Array l Single link list Di sebuah RS terdapat 14 kamar.

Implementasi Linked-List dengan Array l Single link list Di sebuah RS terdapat 14 kamar. Dokter setiap hari akan memeriksa mulai dari pasien yg termuda. START = 4 Kama r 1 2 3 4 Nama D A Usia Link 5 6 7 9 10 11 C B F E 24 13 19 15 26 25 11 3 7 0 10 9 8 12 13 14 4 A 9 B 7 C 3 D 11 E 10 F

Penelusuran Linked List l Penelusuran linked list (daftar berkait) berarti mengunjungi simpul demi simpul

Penelusuran Linked List l Penelusuran linked list (daftar berkait) berarti mengunjungi simpul demi simpul dalam list sampai seluruh simpul terkunjungi. Algoritma: begin ptr START while ptr <> 0 do Proses INFO(ptr) ptr LINK(ptr) end while end

Pencarian dalam Linked List l Pencarian dalam list berarti menelusuri list dan berhenti saat

Pencarian dalam Linked List l Pencarian dalam list berarti menelusuri list dan berhenti saat elemen yang dicari ditemukan atau sampai pada akhir list. Berikut adalah algoritma pencarian pada list yang tidak terurut. Algoritma: begin ptr START while ptr<>0 and ITEMCARI<>INFO(ptr) do ptr LINK(ptr) end while if ITEMCARI = INFO(ptr) then Proses INFO(ptr) else Tidak ditemukan endif end

l Algortima penelusuran yang baik?

l Algortima penelusuran yang baik?

Multi List dalam Satu Array l l l Beberapa list dapat memanfaatkan array yang

Multi List dalam Satu Array l l l Beberapa list dapat memanfaatkan array yang sama. Yang perlu dijaga adalah START-nya tidak mulai dari lokasi yang sama; dan LINK ke lokasi berikutnya tidak menunjuk ke lokasi dalam list lain.

3 List dalam 1 Array TEST 1 2 16 74 3 Kimia Matematika Fisika

3 List dalam 1 Array TEST 1 2 16 74 3 Kimia Matematika Fisika 11 5 9 LINK 14 1 4 82 0 5 84 12 6 78 0 7 74 8 8 100 13 9 76 10 10 56 0 11 88 2 12 62 7 13 74 6 14 93 4 15 0 16 15

Free Storage List l l Free storage list berarti pengelolaan daftar lokasi memori yang

Free Storage List l l Free storage list berarti pengelolaan daftar lokasi memori yang tidak terpakai. Lokasi memori yang tidak dipakai dimungkinkan karena adanya elemen yang dihapus/keluar dari list.

TEST 1 2 16 74 3 Algoritma Geometri Kosong 11 5 9 Lokasi yang

TEST 1 2 16 74 3 Algoritma Geometri Kosong 11 5 9 Lokasi yang tidak digunakan oleh list lain digabungkan dalam List Kosong/Sampah LINK 14 1 4 82 0 5 84 12 6 78 0 7 74 8 8 100 13 9 10 10 3 11 88 2 12 62 7 13 74 6 14 93 4 15 0 16 15

INSERTION (Penyisipan Simpul) l Penyisipan simpul berarti menambah suatu simpul/elemen baru ke dalam sebuah

INSERTION (Penyisipan Simpul) l Penyisipan simpul berarti menambah suatu simpul/elemen baru ke dalam sebuah list. Kama r 1 Nama Usia 3 4 G D A 21 Link 2 5 6 7 9 10 11 C B F E 24 13 19 15 26 25 11 3 7 0 10 9 G 4 A 9 B 7 C 1 8 12 13 14 3 D 11 E 10 F

Kasus Penyisipan Simpul l INSERT FIRST Yaitu kasus penyisipan simpul baru pada awal list.

Kasus Penyisipan Simpul l INSERT FIRST Yaitu kasus penyisipan simpul baru pada awal list. Simpul baru menjadi ujung pertama list. INSERT AFTER Yaitu kasus penyisipan simpul baru setelah sebuah simpul tertentu. INSERT SORT Yaitu kasus penyisipan simpul baru ke dalam list sedemikian sehingga simpul-simpul dalam list tetap dalam keadaan terurut.

Implementasi Linked-List dengan Array l Double link list Di sebuah RS terdapat 14 kamar.

Implementasi Linked-List dengan Array l Double link list Di sebuah RS terdapat 14 kamar. Dokter setiap hari akan memeriksa mulai dari pasien yg termuda. START = 4 Kama r 1 2 3 4 Nama D A Usia 9 10 11 C B F E 24 13 19 15 26 25 Next 11 9 3 7 0 10 Prev 7 0 9 4 11 3 Next = kamar berikutnya Prev = kamar sebelumnya 5 6 7 8 12 13 14

Implementasi Linked-List dengan Array l Single link list Di sebuah RS terdapat 14 kamar.

Implementasi Linked-List dengan Array l Single link list Di sebuah RS terdapat 14 kamar. Dokter setiap hari akan memeriksa mulai dari pasien yg termuda. START = 4 Kama r 1 2 3 4 Nama D A Usia Link 5 6 7 9 10 11 C B F E 24 13 19 15 26 25 11 3 7 0 10 9 8 12 13 14 4 A 9 B 7 C 3 D 11 E 10 F

Implementasi Linked-List dengan Array l Double link list sirkuler START = 4 Kama r

Implementasi Linked-List dengan Array l Double link list sirkuler START = 4 Kama r 1 2 3 4 5 6 7 8 9 10 11 Nama D A C B E Usia 24 13 19 15 25 Next 11 9 3 7 4 Prev 7 11 9 4 3 12 13 Next = kamar berikutnya; Prev = kamar sebelumnya START 11 A 9 4 B 7 9 C 3 7 D 11 3 E 4 14

Implementasi Linked-List dengan Array l Struktur Pohon (Tree) START INFO KIRI KANA N E

Implementasi Linked-List dengan Array l Struktur Pohon (Tree) START INFO KIRI KANA N E 0 0 B 0 0 5 A 3 6 6 C 8 1 D 0 0 1 2 3 A 4 B C D E 7 8 Struktur Pohon 9

Implementasi Linked-List dengan Array l Struktur Sisir (? ? ) START INF O OR

Implementasi Linked-List dengan Array l Struktur Sisir (? ? ) START INF O OR AK SR E 0 0 7 B 5 8 6 5 A 0 3 0 6 C 0 0 0 7 F 0 0 0 8 D 3 0 1 START 1 2 ANAK A 3 ORTU 4 A B ANAK ORTU D A SA U R DA SA R DA U E SA U RA A D C F 9

Free Storage List l l Free storage list berarti pengelolaan daftar lokasi memori yang

Free Storage List l l Free storage list berarti pengelolaan daftar lokasi memori yang tidak terpakai. Lokasi memori yang tidak dipakai dimungkinkan karena adanya elemen yang dihapus/keluar dari list.

1 TEST LINK G 5 2 3 Terisi Kosong 3 8 4 B 4

1 TEST LINK G 5 2 3 Terisi Kosong 3 8 4 B 4 11 5 H 7 6 E 12 7 K 0 8 Lokasi yang tidak digunakan oleh list lain digabungkan dalam List Kosong/Sampah 10 13 9 D 6 10 C 9 11 12 0 F 1 13 14 14 15 15 16 16 2

Proses-Proses terhadap Linked List l TRAVERSING (PENELUSURAN) l INSERTION (PENYISIPAN) l REMOVE (PENGHAPUSAN) l

Proses-Proses terhadap Linked List l TRAVERSING (PENELUSURAN) l INSERTION (PENYISIPAN) l REMOVE (PENGHAPUSAN) l SEARCHING (PENCARIAN)

TRAVERSING Penelusuran terhadap Linked List l Penelusuran linked list (daftar berkait) berarti mengunjungi simpul

TRAVERSING Penelusuran terhadap Linked List l Penelusuran linked list (daftar berkait) berarti mengunjungi simpul demi simpul dalam list sampai seluruh simpul terkunjungi. Algoritma: begin ptr START while ptr <> 0 do Proses INFO(ptr) ptr LINK(ptr) end while end

SEARCHING Pencarian dalam Linked List l Pencarian dalam list berarti menelusuri list dan berhenti

SEARCHING Pencarian dalam Linked List l Pencarian dalam list berarti menelusuri list dan berhenti saat elemen yang dicari ditemukan atau sampai pada akhir list. Berikut adalah algoritma pencarian pada list yang tidak terurut. Algoritma: begin ptr START while ptr<>0 and ITEMCARI<>INFO(ptr) do ptr LINK(ptr) end while if ITEMCARI = INFO(ptr) then Proses INFO(ptr) else Tidak ditemukan endif end

INSERTION (Penyisipan Simpul) l Penyisipan simpul berarti menambah suatu simpul/elemen baru ke dalam sebuah

INSERTION (Penyisipan Simpul) l Penyisipan simpul berarti menambah suatu simpul/elemen baru ke dalam sebuah list. Kama r 1 Nama Usia 3 4 G D A 21 Link 2 5 6 7 9 10 11 C B F E 24 13 19 15 26 25 11 3 7 0 10 9 G 4 A 9 B 7 C 1 8 12 13 14 3 D 11 E 10 F

PRIORITY QUEUE with One. Way List START AAA XXX 2 1 DDD BBB 4

PRIORITY QUEUE with One. Way List START AAA XXX 2 1 DDD BBB 4 2 EEE CCC 2 4 FFF GGG 5 4 X Slide Pertemuan ke-7

Kasus Penyisipan Simpul l l INSERT FIRST Yaitu kasus penyisipan simpul baru pada awal

Kasus Penyisipan Simpul l l INSERT FIRST Yaitu kasus penyisipan simpul baru pada awal list. Simpul baru menjadi ujung pertama list. INSERT AFTER Yaitu kasus penyisipan simpul baru setelah sebuah simpul tertentu.

Penyisipan dalam List INSERT FIRST Sisipkan Elemen Baru ke awal list Algoritma: If AVAIL=NULL

Penyisipan dalam List INSERT FIRST Sisipkan Elemen Baru ke awal list Algoritma: If AVAIL=NULL then Overflow Exit Endif New AVAIL LINK(AVAIL) INFO(New) ITEM LINK(New) START New

Penyisipan dalam List INSERT AFTER Sisipkan Elemen yang ditunjuk oleh ptr. Y setelah elemen

Penyisipan dalam List INSERT AFTER Sisipkan Elemen yang ditunjuk oleh ptr. Y setelah elemen yg ditunjuk oleh ptr. X. Algoritma: INFO(ptr. Y) = ITEM LINK(ptr. Y) = LINK(ptr. X) LINK(X) = ptr. Y