Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linked List.

Presentasi serupa


Presentasi berjudul: "Linked List."— 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 START 1 Kirk 7 2 5 3 Dean 11 4 Maxwell 12 5
Bed No. Patient Next 1 Kirk 7 START 2 5 3 Dean 11 4 Maxwell 12 5 Adams 3 6 7 Lane 4 8 Green 1 9 Samuels 10 11 Fields 8 12 Nelson 9

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 START =9 = INFO(9) = N LINK(9) =3 = INFO(3) = O
1 2 3 O 6 START 9 4 T 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 5 6 11 7 X 10 8 9 N 3 10 I 4 11 E 7 12

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 PTR = START Kerjakan langkah 3 dan 4 selama PTR ≠ NULL Proses INFO(PTR) PTR = LINK(PTR) Selesai

12 Proses yang dilakukan terhadap INFO(PTR) dapat berupa berbagai bentuk
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 Pencarian (searching) dalam linked list
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: List tidak terurut List telah terurut

14 Cari dalam list tidak terurut
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.

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

16 Cari dalam list terurut
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.

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 Algoritmanya: PTR = START Kerjakan langkah 3 selama PTR ≠ NULL
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

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 1 2 3 4 5 6 7 8 9 10 11 12 Kirk 7 6 START Dean 11 5 Maxwell 12 Adams 3 AVAIL Lane 4 10 Green 1 Samuel 2 Fields 8 Nelson 9

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: Field next pointer dari simpul A, sekarang menunjuk ke simpul N, sebelumnya simpul ini ditunjuk oleh AVAIL. AVAIL sekarang menunjuk ke simpul kedua di ruiang-bebas dimana sebelumnya simpul N menunjuk. 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 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) Jika AVAIL=NULL, maka OVERFLOW 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) 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 Jika ITEM<INFO(START),maka LOC=NULL dan EXIT
ALGORITMA : FIND (ITEM) Jika START=NULL, maka LOC=NULL,dan EXIT Jika ITEM<INFO(START),maka LOC=NULL dan EXIT SAVE=START, PTR=LINK(START) Ulangi langkah 5 dan 6 selama PTR<>NULL Jika ITEM<INFO(PTR) maka: LOC=SAVE EXIT 6. SAVE=PTR PTR=LINK(PTR) 7. LOC=SAVE 8 EXIT

31 ALGORITMA : INSSORT Panggil FIND (ITEM) Panggil INSLOC (ITEM,LOC) EXIT

32 Penghapusan Simpul 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 Penghapusan Simpul ALGORITMA : DELFIRST Jika START=NULL, maka overflow
FIRST=START START=LINK(START) LINK(FIRST)=AVAIL AVAIL=FIRST EXIT

34 Penghapusan Simpul Penghapusan Simpul 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 Penghapusan Simpul ALGORITMA : SEARCH(LOC) PTR=START
Ulangi langkah 3 sampai PTR=LOC LOCP=PTR PTR=LINK(PTR) EXIT

36 Penghapusan Simpul ALGORITMA : DELLOC(LOC) Panggil SEARCH
Jika LOC=NULL, maka lokasi tidak ketemu,EXIT LINK(LOCP)=LINK(LOC) LINK(LOC)=AVAIL AVAIL=LOC EXIT

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

38 Penghapusan Simpul ALGORITMA : DELLAST PTR=START
Ulangi langkah 3 hingga PTR=NULL LOCP=PTR PTR=LINK(PTR) LINK(LOCP)=NULL LINK(PTR)=AVAIL AVAIL=PTR EXIT

39 Jenis LinkedList 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 Header LinkedList
Sebuah linked list yang salah satu simpulnya (node) berisikan catatan khusus dan berada di awal dari list (daftar).

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

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

43 Two Way LinkedList 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 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 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 Two Way Header LinkedList
Grounded Two Way Header Linked List Circular Two Way Header Linked List

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


Download ppt "Linked List."

Presentasi serupa


Iklan oleh Google