Linked List.

Slides:



Advertisements
Presentasi serupa
Single linked list.
Advertisements

STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
Sekolah Tinggi Manajemen Informatika dan Komputer
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Pertemuan 3 RECORD.
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
SENARAI BERANTAI TUNGGAL
Single Linked List.
PERTEMUAN KE-11 Kamis, 28 Oktober LINKED LIST LAINNYA List dengan hirarki (koreksi) Struktur Sisir (??) START ANAK SAUDARA START ANAK SAUDARA ORTU.
STRUKTUR DATA LINKED LIST
QUEUE / ANTRIAN Queue / antrian adalah sebuah bentuk list dengan operasi penyisipan hanya dapat dilakukan pada satu sisi yang disebut belakang (REAR) dan.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
Linear Data Structures (Linked List). Node Link atau pointer data field.
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
Linear List.
Struktur Data List Linear : Linked List (Single Linkedlist)
LINKED LIST.
BAB I TIPE DATA.
Struktur Data (Data Structure) – IS 2313
Algoritma dan Struktur Data
SET/HIMPUNAN PADA PASCAL
BAB 5 LINKED LIST Linked list adalah struktur berupa rangkaian elemen saling berkait dimana tiap elemen dihubungkan ke elemen lain melalui pointer. Keterhubungan.
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
Algoritma dan Struktur Data
STRUKTUR DATA LIST BERKAIT.
Struktur Data List Berkait (Delete).
MATAKULIAH : STRUKTUR DATA
SENARAI BERANTAI TUNGGAL
Struktur Data Linked List
STRUKTUR DATA Linked List
4. Linked List (List Linier)
8. Singly Linear Linked List
Informatique Engineering Ahmad Dahlan University May 17, 2004
Tim struktur data IF UNIKOM
Algoritma dan Struktur Data
Program Studi Teknik Informatika
Program Studi Teknik Informatika
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Program Studi Teknik Informatika
SUMMARY LINKED LIST.
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
Linked List Eko Riyanto.
MATAKULIAH : STRUKTUR DATA
Linked List INSERT KIRI 6.3 & 7.3 NESTED LOOP.
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
Linked List 6.3 & 7.3 NESTED LOOP.
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada.
IMPLEMENTASI LINKED LISTMENGGUNAKAN ARRAY
STRUKTUR DATA LINKED LIST
DEQUE Deque (Deck atau Dequeue) adalah suatu list linier atau linier list, yang penambahan dan penghapusan elemennya dapat dilakukan pada kedua sisi ujung.
Defri Kurniawan VARIASI LIST Defri Kurniawan
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Linear Doubly Linked List
LINKED LIST (SENARAI BERANTAI)
LINKED LIST MELINGKAR Linked List melingkar (circular) adalah linked list linier biasa dimana pointer pada node terakhir diarahkan kembali ke node pertama.
Variable Static & Linked List
Linked List DELETE TENGAH 6.3 & 7.3 NESTED LOOP.
Transcript presentasi:

Linked List

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

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

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.

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

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

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

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

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)

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

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

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.

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

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.

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

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.

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.

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

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.

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.

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

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.

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.

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.

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.

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

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

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.

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.

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

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

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.

Penghapusan Simpul ALGORITMA : DELFIRST Jika START=NULL, maka overflow FIRST=START START=LINK(START) LINK(FIRST)=AVAIL AVAIL=FIRST EXIT

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.

Penghapusan Simpul ALGORITMA : SEARCH(LOC) PTR=START Ulangi langkah 3 sampai PTR=LOC LOCP=PTR PTR=LINK(PTR) EXIT

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

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

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

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

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

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

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

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).

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.

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).

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

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