Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linked List. Struktur Berkait Salah satu struktur berkait adalah yang disebut sebagai Linier Linked List Selain itu dikenal pula beberapa struktur berkait.

Presentasi serupa


Presentasi berjudul: "Linked List. Struktur Berkait Salah satu struktur berkait adalah yang disebut sebagai Linier Linked List Selain itu dikenal pula beberapa struktur berkait."— Transcript presentasi:

1 Linked List

2 Struktur Berkait Salah satu struktur berkait adalah yang disebut sebagai Linier Linked List Selain itu dikenal pula beberapa struktur berkait yang lain seperti: Linked-Stack, Linked-Queue, Double Linked- List, Linked-Generalize List dan sebagainya

3 Struktur Berkait Linked List adalah okleksi linier dari elemen data yang disebut simpul atau node. Cara melinierkan urutan adalah dengan menggunakan penuding atau pointer. Setiap simpul terdiri atas 2 bagian: Bagian pertama berisi informasi data Bagian kedua berisi link atau nextpointer

4 Struktur Berkait Link ini berisi alamat dari simpul berikutnya dalam list. Link ini bernilai 0 bila link tersebut tidak menunjuk ke simpul lainnya. Penunjuk ini disebut penunjuk nol. Linked list juga mengandung variabel penuding list, yang biasanya disebut START yang berisi alamat pertama dari list.

5 Struktur Berkait START Hal khusus dapat terjadi dimana list tidak mengandung sebuah simpulpun. List seperti ini disebut list hampa. Pada kondisi ini penuding START bernilai 0

6 Struktur Berkait CONTOH BedNo. Patient Kirk Dean Maxwell Adams Lane Green Samuels Fields Nelson Next 8 5 START

7 Penyajian Linked List Dalam Memori Jika tidak disebutkan lain, maka penyajian linked list adalah sebagai berikut: INFO(K)  menyajikan informasi LINK(K)  menyajikan field next pointer START  menyimpan alamat awal dari list

8 Contoh O N X T  I E INFO LINK 9 START START =9 = INFO(9) = N LINK(9) =3 = INFO(3) = O LINK(3) =6 = INFO(6) = blank LINK(6) =11= INFO(11)= E LINK(11)=7 = INFO(7) = X LINK(7) =10= INFO(10)= I LINK(10)=4 = INFO(4) = T LINK(4) =0 = akhir list

9 Kunjungan Linked List Kunjungan Linked List disebut juga proses Traversal, dimana simpul akan dikunjungi sesuai urutan, untuk memproses setiap simpul tepat satu kali. Digunakan penunjuk PTR untuk menunjukkan simpul yang sedang diproses saat itu. LINK(PTR) adalah penunjuk simpul berikutnya. PTR = LINK(PTR)

10 Algoritma traversal adalah sebagai berikut: Mula-mula PTR diberi nilai awal yaitu sama dengan START Kemudian proses INFO(PTR), yaitu informasi simpul pertama dari list. Kemudian perbaharui PTR dengan perintah PTR=LINK(PTR) Proses INFO(PTR), yaitu informasi pada simpul kedua

11 Perbaharui lagi nilai PTR untuk simpul berikutnya. Proses traversal berakhir bilamana nilai PTR = NULL. ALGORITMA 1.PTR = START 2.Kerjakan langkah 3 dan 4 selama PTR ≠ NULL 3.Proses INFO(PTR) 4.PTR = LINK(PTR) 5.Selesai

12 Proses yang dilakukan terhadap INFO(PTR) dapat berupa berbagai bentuk. Misalnya proses mencetak, ataupun yang lainnya. Bisa juga dibuatkan algoritma untuk menghitung banyak simpul dalamn linked list.

13 Misalkan sebuah linked list disajikan dalam memori seperti bahasan sebelumnya. Sekarang diberikan informasi tertentu ITEM, diminta untuk menentukan lokasi simpul yang mengandung informasi yang sama dengan ITEM tersebut. Ada dua cara untuk hal tersebut: 1.List tidak terurut 2.List telah terurut Pencarian (searching) dalam linked list

14 Untuk mencari dalam list tidak terurut dapat dilakukan dengan sederhana sekali, yaitu dengan melakukan proses traversal sambil setiap kali memeriksa apakah informasi pada simpul tersebut sama dengan ITEM yang dicari. Algoritma ini memerlukan dua buah pemeriksaan, yaitu memeriksa apakah sudah sampai simpul terakhir (PTR = NULL) dan apakah INFO(PTR) = ITEM dimana yang dicari ketemu. Cari dalam list tidak terurut

15 1.PTR = START 2.Kerjakan langkah 3 selama PTR ≠ NULL 3.Jika INFO(PTR) = ITEM maka LOC = PTR Exit Jika INFO(PTR) ≠ ITEM maka PTR = LINK(PTR) 4. LOC = NULL {pencarian gagal} 5. Selesai Algortima

16 Cara yang dilakukan hampir sama dengan cara sebelumnya. Caranya adalah dengan melakukan proses traversal, sambil setiap kali memeriksa informasi simpul tersebut. Karena list telah terurut, maka tidak perlu dilakukan pencarian samapi akhir dari list, jika INFO(PTR) > ITEM, maka pencarian boleh dihentikan. Cari dalam list terurut

17 Diperlukan dua pemeriksaan pada setiap putaran. Pertama apakah ITEM sudah besar dari INFO(PTR), yang berarti ITEM tidak terdapat dalam list. Kedua apakah ITEM = INFO(PTR), yang berarti ITEM ditemukan lokasinya.

18 1.PTR = START 2.Kerjakan langkah 3 selama PTR ≠ NULL 3.Jika INFO(PTR) < ITEM maka PTR = LINK(PTR) jika INFO(PTR) = ITEM maka LOC = PTR Exit jika tidak LOC = NULL exit 4. LOC = NULL {pencarian gagal} 5. Selesai Algoritmanya:

19 Alokasi Memori Untuk menyimpan linked list dalam memori dibutuhkan suatu mekanisme untuk menyediakan memori bagi simpul baru atau mengelola memori yang sementara ini tidak berguna karena adanya penghapusan, untuk sewaktu-waktu dapat dipakai lagi. Untuk hal itu biasanya dibuatkan sebuah list khusus yang berisi sel memori yang tidak digunakan.

20 List ini disebut list dari ruang yang tersedia atau free-storage list atau free-pool. List ini mempunyai sebuah menunjuk tersediri yang merupakan sebuah larik AVAIL, sehingga list ini juga sering disebut list AVAIL. Contoh: Pada linked list berikut, perhatikan bahwa BED(10) merupakan tempat tidur pertama yang tersedia, BED(2) merupakan tempat tidur berikutnya.

21 Kirk Samuel Green Lane Adams Maxwell Dean Fields Nelson START AVAIL 10

22 Koleksi Sampah Setelah penghapusan sebuah simpul linked list, terdapat ruang memori yang bebas (tidak terpakai). Diinginkan ruang memori tersebut dapat digunakan lagi. Salah satu alternatif metode dengan Sistem Operasi yang secara priodik mengumpulkan semua ruang memori hasil penghapusan simpul dan memasukkannya ke ruang bebas. MEtode ini dikenal dengan Koleksi Sampah atau Garbage Collection.

23 Penyisipan Simpul ke dalam Linked List Pada gambar telihat bahwa akan disisipkan sebuah simpul baru N antara simpul A dan simpul B. Simpul A sekarang menunjuk ke simpul N dan simpul N menunjuk ke simpul yang tadi titunjuk oleh simpul A yaitu simpul B.

24 Pada gambar berikutnya terlihat bahwa simpul N diambil dari list AVAIL. Penunjuk simpul berubah sebagai berikut: 1.Field next pointer dari simpul A, sekarang menunjuk ke simpul N, sebelumnya simpul ini ditunjuk oleh AVAIL. 2.AVAIL sekarang menunjuk ke simpul kedua di ruiang-bebas dimana sebelumnya simpul N menunjuk. 3.Field nextpointer dari simpul N, sekarang menunjuk simpul B, yang tadinya dituding oleh simpul A.

25 Di sini juga terdapat dua kasus khusus, yakni simpul baru N adalah simpul pertama dalam list, maka START akan menunjuk ke N, dan jika simpul N adalah simpul terakhir dalam list, N field nextpointer-nya akan berisi null.

26 Penyisipan pada bagian awal linked list ALGORITMA : INSFIRST 1.Jika AVAIL=NULL maka tulis OVERFLOW dan exit 2. {Memindahkan simpul pertama dari AVAIL} NEW=AVAIL dan AVAIL=LINK(AVAIL) 3. {Menyalin data baru ke simpul baru} INFO(NEW)=ITEM 4. LINK(NEW)=START 5. START=NEW 6. EXIT

27 Penyisipan pada lokasi tertentu Jika LOC=NULL maka penyisipan dilakukan di awal seperti algoritma sebelumnya ALGORITMA : INSLOC (ITEM,LOC) 1.Jika AVAIL=NULL, maka OVERFLOW 2.NEW=AVAIL AVAIL=LINK(AVAIL) 3. INFO(NEW)=ITEM 4. Jika LOC=NULL, maka LINK(NEW)=START START=NEW Jika tidak, maka LINK(NEW)=LINK(LOC) LINK(LOC)=NEW 5. EXIT

28 Penyisipan pada linked list terurut Misalkan ITEM akan disisipkan ke dalam linked list terurut. ITEM harus disisipkan di antara simpul A dan simpul B sehingga: INFO(A) < ITEM < INFO(B) INFO(A) < ITEM < INFO(B) Untuk hal ini sebelum melakukan penyisipan harus dilakukan traversal untuk mendapatkan lokasi simpul terakhir yang nilainya kurang dari ITEM.

29 Dalam melakukan traversal digunakan penunjuk PTR dan bandingkan ITEM dengan INFO(PTR). Selama traversal harus disimpan jejak lokasi simpul sebelumnya dengan menggunakan variabel SAVE. Untuk hal tersebut digunakan statement SAVE=PTR dan PTR=LINK(PTR) Traversal dilanjutkan selama INFO(PTR) < ITEM.

30 ALGORITMA : FIND (ITEM) 1.Jika START=NULL, maka LOC=NULL,dan EXIT 2.Jika ITEMNULL 5.Jika ITEM

31 ALGORITMA : INSSORT 1.Panggil FIND (ITEM) 2.Panggil INSLOC (ITEM,LOC) 3.EXIT

32 Penghapusan Simpul 1. Simpul pertama TIdak perlu dilakukan proses traversal karena simpul yang kan dihapus jelas setelah START. Diperlukan variabel FIRST untuk menyimpan lokasi simpul pertama yang akan dihapus.

33 ALGORITMA : DELFIRST 1.Jika START=NULL, maka overflow 2.FIRST=START START=LINK(START) LINK(FIRST)=AVAIL AVAIL=FIRST 3.EXIT Penghapusan Simpul

34 2. Simpul simpul yang diketahui Dilakukan proses traversal untuk mendapatkan lokasi simpul yang akan dihapus. Diperlukan LOCP untuk mencatat lokasi simpul yang mendahului simpul yang akan dihapus.

35 ALGORITMA : SEARCH(LOC) 1.PTR=START 2.Ulangi langkah 3 sampai PTR=LOC 3.LOCP=PTR PTR=LINK(PTR) 4.EXIT Penghapusan Simpul

36 ALGORITMA : DELLOC(LOC) 1.Panggil SEARCH 2.Jika LOC=NULL, maka lokasi tidak ketemu,EXIT 3.LINK(LOCP)=LINK(LOC) 4.LINK(LOC)=AVAIL AVAIL=LOC 5.EXIT Penghapusan Simpul

37 3. Simpul terakhir 1. telusuri linked list sehingga mendapatkan elemen terakhir. 2. elemen sebelum elemen terakhir menjadi null.

38 ALGORITMA : DELLAST PTR=START 1.Ulangi langkah 3 hingga PTR=NULL 2.LOCP=PTR PTR=LINK(PTR) 4.LINK(LOCP)=NULL 5.LINK(PTR)=AVAIL AVAIL=PTR 6.EXIT Penghapusan Simpul

39 Jenis LinkedList 1. Header Linked List 2. Two Way Linked List 3. Two Way Header Linked List 4. One Way Priority Linked List

40 Header LinkedList Sebuah linked list yang salah satu simpulnya (node) berisikan catatan khusus dan berada di awal dari list (daftar).

41 Header LinkedList Terdiri dari 2 jenis : 1. Grounded Header Linked List Header linked list yang simpul terakhirnya berisi null pointer.

42 Header LinkedList 2. Circular Header Linked List Header linked list yang simpul terakhirnya menunjuk kembali ke simpul awal (node header).

43 Two Way LinkedList Linked list yang setiap simpul dibagi atas 3 bagian utama. 1. bagian nilai data (info). 2. link ke alamat elemen sebelumnya (back). 3. link ke alamat elemen berikutnya (next).

44 Two Way LinkedList Aturan : lokasi berikutnya dari simpul A adalah lokasi simpul B, jika dan hanya jika, lokasi sebelumnya dari simpul B adalah lokasi simpul A.

45 Two Way Header LinkedList Sebuah two way linked list dimana simpul (node) awalnya berisikan catatan khusus dan berada di awal dari list (daftar).

46 Two Way Header LinkedList Grounded Two Way Header Linked List Circular Two Way Header Linked List

47 One Way Priority LinkedList Linked list yang menunjukkan ke simpul (node) berikutnya berdasarkan tingkat prioritasnya.


Download ppt "Linked List. Struktur Berkait Salah satu struktur berkait adalah yang disebut sebagai Linier Linked List Selain itu dikenal pula beberapa struktur berkait."

Presentasi serupa


Iklan oleh Google