Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehSuhendra Dharmawijaya Telah diubah "6 tahun yang lalu
1
Chapter 9 Linked List (Senarai Bertaut)
November 2009
2
Pengantar Jenis struktur data berdasarkan pemesanan ukuran dan jumlah:
struktur data statis: ditentukan sebelumnya struktur data dinamis: ukuran ditentukan saat kompilasi, dibentuk saat program dijalankan, sesuai kebutuhan. Contoh: linked list
3
KONSEP Linked List Sejumlah elemen yang saling bertaut
Setiap elemen dibedakan atas: bagian yang berisi data yang diinginkan bagian yang berisi alamat elemen berikutnya, disebut petunjuk (pointer) elemen pertama: kepala (variabel tertentu)
4
KONSEP Linked List Data berikut Kepala a1 a2 a2 a3 a1 a2 a3
5
Skema logik linked list
PENDAHULUAN Head a2 a3 a4 a1 a2 a3 a4 Gambar (c) Skema logik linked list
6
Contoh bentuk Linked list
PENDAHULUAN Node Kepala Berikut / next Sakura Shaoran Toya Yukito Data Node Ekor Gambar Tomoyo Eriol Contoh bentuk Linked list
7
Kekurangan Linked List
Kelebihan Linked List Struktur dinamis memori lebih fleksibel dan hemat Representasi struktur data yang kompleks representasi dunia nyata dengan mudah ketelitian memelihara petunjuk mengamati setiap elemen digunakan/tidak LISP: bahasa pemrograman memudahkan pengolahan senarai bertaut Kekurangan Linked List
8
Skema lojik berkas, larik dan senarai bertaut
kepala berkas larik Senarai bertaut Sakura Shoaran … Eriol Sakura 1 Sakura 2 Shaoran ... Shaoran n Eriol ... ... Eriol Skema lojik berkas, larik dan senarai bertaut
9
Membangun Linked List (SB)
Mendefinisikan Struktur Elemen SB data: ruas berisi data yang disimpan berikut: ruas berisi alamat elemen berikutnya def senarai: record data: string berikut:^senarai erecord edef
10
Membangun Linked list(SB)
Menciptakan Satu Elemen SB elemen diciptakan dengan identitas, alamat alamat diciptakan dalam variabelpenunjuk def p: ^senarai //p petunjuk ke elemen SB edef menciptakan elemen SB baru: new(p) //menggunakan informasi pendefinisian variabel p untuk menciptakan elemen baru
11
Membangun Linked List(SB)
Mengisi Data ke Suatu Elemen SB data berikut p p Sakura p^data:=‘Sakura’ new (p) Sakura p p^berikut:=q q Sakura Shaoran p q^data:=‘Shaoran’ q^berikut:=nul (selesai) q
12
Membangun Senarai Bertaut(SB)
Membebaskan Satu Elemen SB Elemen yang tidak digunakan, dibebaskan dan digunakan kembali dispose (p) //p tidak dapat diakses Merangkai elemen-elemen SB Definisi strutur elemen-elemen SB Menciptakan satu elemen Mengisi data Menciptakan elemen berikutnya Mengisi dengan data Merangkaikannya dengan elemen sebelumnya
13
Merangkai Elemen-Elemen Linked List
kepala kepala berikut data (a) (b) (c) Sakura p p p kepala kepala (d) Sakura (e) Sakura q p q p Gambar 9.7. Proses Perangkaian Elemen-Elemen Linked List
14
Merangkai Elemen-Elemen Linked List
kepala (f) Sakura q p kepala Sakura Shaoran (g) q p
15
Merangkai Elemen-Elemen Linked List
kepala Sakura Shaoran (h) q p kepala (i) Sakura Shaoran q p
16
Merangkai Elemen-Elemen Linked List
kepala (J) Sakura Shaoran ……….. kepala Shaoran Toya Yukito Sakura
17
// ciptakan elemen baru beralamatkan p
new(p) kepala:=p p^data:=‘Sakura’ q:=p new(p) q^berikut:=p p^data:=‘Shaoran’ q:=p new(p) q^berikut:=p p^data:=‘Toya’ q:=p new(p) q^berikut:=p p^data:=‘Yukito’ p^berikut:=nil // ciptakan elemen baru beralamatkan p // simpan alamat pertama pada kepala //isi ruas data p dengan Sakura // amankan isi p pada q //isi sebelumnya hilang, disimpan dalam q // rangkai elemen SB sebelumnya dengan yang baru // isi p diamankan dalam q, kemudian q digeser // SB diakhiri dengan nil
18
Membangun Linked List (SB)
Menelusuri Elemen-elemen SB Penelusuran dilakukan melalui pointer Penulusuran hanya mungkin dimulai dari kepala berhenti jika nil p:=kepala while p <> nil do write (p^data) p:=p^berikut ewhile //penelusuran mulai dari kepala //berhenti jika nil // tulis data elemen p // ganti alamat berikut
19
Program membangun Linked Listb dan memperagakannya di layar komputer
prog BuatDanPeragakanSB() {Definisi struktur elemen-elemen SB dan tiga variabel berjenis pointer} def senarai: record data: string berikut:^senarai erecord kepala, p, q: ^senarai edef
20
Memeragakan semua elemen SB ke layar
new(p) kepala:=p p^data:=‘Sakura’ q:=p new(p) q^berikut:=p p^data:=‘Shaoran’ q:=p new(p) q^berikut:=p p^data:=‘Toya’ q:=p new(p) q^berikut:=p p^data:=‘Yukito’ p^berikut:=nil Merangkai Linked List Memeragakan semua elemen SB ke layar p:=kepala while p <> nil do write (p^data) p:=p^berikut ewhile
21
Membangun Linked List (SB)
Membangun SB dengan data dari berkas isi berkas disimpan dalam senarai bertaut dan urutan dalam berkas =urutan dalam senarai bertaut Algoritmanya: membaca berkas dan menyimpan ke SB yang ditunjuk kepala Algoritma progBacaBerkasKeSB(b, kepala) new(p) kepala:=p read (b, marga) while not eof (b) do p^data:=marga q:=p new (p) q^berikut:=p read (b, marga) ewhile
22
{Berikan nil sebagai tanda akhir SB} if p:=kepala then
{tidak ada data didalam berkas b, SB kosong} kepala:=nil else q^berikut:=nil eif dispose (p) {elemen yang ditunjuk oleh p tidak diperlukan lagi} eproc
23
Membangun Linked List(SB)
Membangun SB dengan Susunan Data Terbalik Algoritmanya: read (b, marga) while not eof (b) do p^data:=marga p^berikut:=q q:=p new (p) read (b, marga) ewhile procSusunTerbalikBerkasKeSB(b, kepala) {Baca data dari berkas b dan susun secara terbalik ke SB yang ditunjuk kepala} q:=nil {elemen terakhir SB} new(p) {elemen SB siap diisi}
24
{Tentukan harga kepala, nil jika berkas kosong}
if q:=nil then {tidak ada data didalam berkas b, SB kosong} kepala:=nil else kepala:=q eif dispose (p) {elemen yang ditunjuk oleh p tidak diperlukan lagi} eproc
25
Penelusuran dan Pencarian Elemen SB
Penulisan Semua Elemen SB penelusuran mulai dari kepala sampai ditemukan nil p:=kepala while p <> nil do write (p^data) p:=p^berikut ewhile proc TulisSB() //Tulis semua elemen SB yang berisi eproc
26
Pencarian Berdasarkan Data
cari data d dalam SB catat alamat elemen d dalam variabel p dan alamat sebelumnya dalam variabel q Isi p dengan nil jika d tidak ditemukan p:=kepala q:=nil while p <> nil and p^data <> d do q:=p p:=p^berikut ewhile proc CariData(d,p,q) eproc data
27
Pencarian Berdasarkan Nomor Elemen
cari alamat elemen ke-n SB didalam variabel p simpan dalam p cari alamat elemen ke n-1 didalam variabel q p:=kepala q:=nil for i:=1 to n do q:=p p:=p^berikut efor proc CariAlamatElemenKe(n,p,q) eproc
28
Pencarian Berdasarkan Alamat Elemen
alamat suatu elemen diketahui di dalam variabel p cari alamat elemen sebelumnya, catat di dalam variabel q proc CariSebelum(p,q) q:=nil r:=kepala while r <> nil and r <> p do q:=r r:=r^berikut ewhile eproc
29
Pencarian Alamat Elemen Terakhir
cari elemen terakhir dari suatu SB simpan didalam variabel p simpan alamat sebelumnya pada variabel q proc CariTerakhir(p,q) q:=nil p:=nil r:=kepala while r <> nil do q:=p p:=r r:=r^berikut ewhile eproc
30
Penghapusan Elemen Linked List
memberi tanda elemen yang dihapus menimpa elemen yang dihapus dengan menggeser seluruh elemen di bawahnya Keadaan yang perlu diperhatikan SB kosong SB hanya terdiri dari satu elemen SB lebih dari satu elemen
31
Hapus sesudah p hapus elemen yang ditunjuk p
jika q, alamat elemen sesudah p, algoritmanya menjadi: proc HapusSesudah(p) if p^berikut =nil then write (‘HapusSesudah gagal, p adalah elemen terakhir’) else q:=p^berikut p^berikut:=q^berikut dispose (q) eif eproc
32
Hapus Sesudah P q := p^berikut Simpan alamat elemen sesudah p pada q (b) p^berikut := q^berikut Buat penunjuk melompati q (c) Dispose (q) Bebaskan elemen q (d)
33
Hapus Sesudah P (a) …. … p (b) …. … p q
34
Hapus Sesudah P … … (c) p q (d) … … p q
Proses Penghapusan Suatu elemen SB
35
Hapus Yang Pertama jika hanya satu elemen SB kepala =nil
jika SB lebih dari satu elemen kepala =elemen ke-2 proc HapusPertama() if kepala^berikut =nil then dispose (kepala) kepala:=nil else pertama:=kepala kepala:=kepala^berikut dispose (pertama) eif eproc
36
Hapus Yang Terakhir jika hanya satu elemen SB kepala =nil
jika SB lebih dari satu elemen alamat elemen ke-2 terakhir ditentukan dahulu proc HapusTerakhir() if kepala^berikut =nil then dispose (kepala) kepala:=nil else CariTerakhir (p.q) //mencari alamat elemen terakhir q^berikut:=nil dispose (p) eif eproc
37
Penyisipan Elemen Linked List
Sisip Sesudah p q menyisipkan elemen baru, yang ditunjuk oleh q sesudah elemen yang ditunjuk oleh p proc SisipSesudah(p.q) q^berikut:=p^berikut p^berikut:=q eproc
38
Sisip sesudah P, Q (a) …. … p q (b) …. … p q
39
Sisip sesudah P, Q Gambar 9.11 Proses Penyisipan Suatu elemen SB (c)
…. … p q Gambar 9.11 Proses Penyisipan Suatu elemen SB
40
Sisip di awal Sisip di awal harga kepala harus diubah
q^berikut:=kepala kepala:=p proc SisipDiawal(p) eproc Sisip di awal harga kepala harus diubah p^berikut:=nil r^berikut:=q proc SisipDiakhir(p) eproc
41
Jenis-jenis Senarai Bertaut
SB Berekor SB Sirkuler SB Dobel SB Bertingkat Ganda Pohon Graph
42
Penyunting Naskah (Text Editor)
Penyisipan baris baru Menghapus suatu baris Penggantian baris Struktur data untuk menyimpan naskah pada saat pengeditan
43
SELESAI BAB 9
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.