A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

dokumen-dokumen yang mirip
Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB IX LINKED LIST (SENARAI BERANTAI)

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

BAB VII SENARAI BERANTAI (List)

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

KERUGIAN DAN KEUNTUNGAN LINKED LIST

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

ALGORITMA & PEMROGRAMAN

Lab. Teknik Informatika Struktur Data 1

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

Linked List. Bandung 2013

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.

SINGLE LINKED LIST (NON CIRCULAR)

Jadi satu simpul di double linked list adalah sebagai berikut : Info. Kiri. Kanan

BAB II STACK Atau TUMPUKAN

BAB VI SEARCHING (PENCARIAN)

SENARAI BERANTAI (LINK LIST)

Pertemuan 3 RECORD. Contoh penggunaan record (dalam program PASCAL) : Type Siswa = record Nama : string[25]; Kelas : 1..6; Nilai : real; end;

2 SENARAI/LIST BERANTAI GANDA

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

SEARCHING (PENCARIAN)

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

4. STACK / TUMPUKAN TEORI PENUNJANG

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

POINTER PADA PASCAL. <nama_var> : ^<tipe_data>; <nama_var> : pointer;

BAB XI Manipulasi Binary Tree

6. TREE / BINARY TREE

Pertemuan VI ANTRIAN (Queue)

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Pengenalan Pascal. Sejarah Singkat Pascal

KONSEP POINTER DAN LINKED LIST

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

KONSEP POINTER DAN LINKED LIST

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

BAB II STACK (TUMPUKAN)

Dasar Komputer & Pemrogaman 2A

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

MODUL 1. Struktur Bahasa PASCAL secara umum

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

KONSEP DASAR BAHASA PASCAL

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

LIST LINIER 1. DEFINISI

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

MODUL STRUKTUR DATA. Erna Kumalasari Nurnawati

KONSEP POINTER DAN LINKED LIST

Struktur Data. Pertemuan 2

SMA SANTO PAULUS PONTIANAK

Struktur Data. PDE - Struktur Data 1

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

BAB III QUEUE (ANTRIAN)

Struktur Data. Queue (Antrian)

QUEUE (ANTRIAN) Struktur Data - Queue

Review : Sifat Implementasi Linear List dengan Array

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

Pointer. Pengertian. Struktur Data Pascal

MODUL PRAKTIKUM STRUKTUR DATA

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

Searching [pencarian] Algoritma Pemrograman

Queue. Implementasi Queue dengan Array

& PEMROGRAMAN. Alex De Kweldju, S.Kom D3 Teknik Komputer Fakultas Teknik Universitas Negeri Papua

PRAKTIKUM 7 TIPE DATA TERSTRUKTUR. Larik : deretan data yang punya type data sejenis. Misalnya : Daftar Nomor Telpon, Tabel Pajak dll.

BAB II Senarai Berantai (Linked List)

Pada kondisi ini proses penghapusan tidak bisa dilakukan Kondisi linked list memiliki hanya 1 data{satu simpul} Akhir. Akhir

ALGORITMA DAN STRUKTUR DATA

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 9

BAB VII ALGORITMA DIVIDE AND CONQUER

[1997] NUS: var x,y=byte; c. program xyz ; 1. Manakah identifier yang benar untuk menamakan nama program : a. prog-a b. prog_a c. prog+a d.

LIST. Dewi Sartika, M.Kom

SORTING. Brigida Arie Minartiningtyas, M.Kom

MODUL 6 SINGLE & DOUBLE LINKED LIST

BAB IV MATRIKS (ARRAY MULTI DIMENSI)

MODUL 3 ALGORITMA PEMROGRAMAN

Bab 1 Pengenalan Pascal 1 BAB I PENGENALAN PASCAL, TIPE-TIPE DATA PASCAL DAN STATEMEN DASAR PADA PASCAL TUJUAN PRAKTIKUM TEORI PENUNJANG

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Bab 2 DASAR-DASAR ALGORITMA

BAB V SORTING (PENGURUTAN) INTERNAL

Tipe Data. Definisi Tipe Data

Belajar itu, Tidak harus menunggu materi dari guru Inisiatif Mencari itulah BELAJAR.

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

Perulangan Muh. Izzuddin Mahali, M.Cs. Pertemuan 3. Algoritma dan Struktur Data. PT. Elektronika FT UNY

{ Program Pointer Pertama } { Program Pointer Single Linklist }

BAB 1 PENGANTAR KE STRUKTUR DATA

Transkripsi:

struktur data fd [page 1 of 7] SENARAI BERANTAI Dalam pemakaian sehari-hari istilah senarai berantai (list) adalah kumpulan linier sejumlah data. Contohnya seperti daftar belanja harian, dimana setiap harinya daftar belanjaan tersebut dapat berubah-ubah. Ada yang dihapus jika barang telah dibeli atau ditambahkan barang baru yang akan dibeli. Telah kita ketahui bahwa penggunaan pointer sangat mendukung dalam pembentukan struktur data dinamis. Salah satu struktur data dinamis yang paling sederhana adalah senarai berantia (linked list), atau senari satu arah (one-way list). Dengan demikian senarai berantai adalah kumpulan komponen yang disusun secara berurutan dengan bantuan pointer. Masing-masing komponen dinamakan dengan simpul (node). Sehingga setiap simpul dalam senarai berantai teragi menjadi dua bagian. Bagian pertama disebut medan informasi, berisi informasi yang akan disimpan dan diolah. Bagian kedua disenut penghubung (link field), berisi alamat simpul berikutnya. Gambar dibawah ini menunjukkan diagram skematis dari senarai berantai dengan 6 simpul. A B C D E F Medan penghubung simpul Medan informasi Gambar 1. Senarai berantai dengan 6 simpul Setiap simpul digambarkan dalam 2 bagian. Bagian kiri adalah medan informasi dan bagian kanan adalah medan penghubung, sehingga dalam diagram digambarkan sebagai anak panah. Perlu diingat bahwa medan penghubung adalah sebuah pointer yang menunjukan ke simpul berikutnya, sehingga nilai dari medan ini adalah alamat sebuah lokasi tertentu dalam memori. Pada gambar diatas, pointer, yang bukan merupakan bagian dari senarai, menunjukkan ke simpul pertama dari senarai tersebut. Medan penghubung (pointer) dari suatu simpul yang tidak menunjukkan simpul lain disebut dengan pointer kosong, yang nilainya dinyatakan sebagai nil (nil adalah reserved word Pascal yang berarti bahwa pointer tidak menunjukkan ke suatu simpul, dan nilainya sama dengan 0 atau bilangan negatif). Dengan memperhatikan gambar diatas, kita bisa melihat bahwa hanya dengan sebuah pointer saja maka kita bisa membaca semua informasi yang tersimpan dalam senarai. Senarai berantai sangat berguna dalam terapan-terapan sehari-hari dimana komponen-komponen dalam jumlah sangat besar harus dijaga supaya selalu dalam keadaan terurutkan menurut kriteria tertentu, misalnya secara alphabetis, dan dimana komponen-komponennya sering dihapus atau ditambahkan. Penyajian Senarai Berantai Sebelum kita mempelajari beberapa operasi dasar yang biasa dilakukan pada sebuah senarai berantai, ada baiknya jika kita lihat bagaimana sesungguhnya suatu senarai berantai disimpan dalam memori. Misalnya senarai berantai pada Gambar 1 diatas kita namakan Daftar. Senarai berantai Daftar dalam memori akan disajikan dengan cara sebagai berikut : Pertama-tama Daftar memerlukan dua larik linier (vektor), kita namakan vektor Info dan Sambungan sedemikian rupa sehingga vektor Info berisi komponen yang tersimpan dalam medan informasi dan vektor Sambungan berisi medan pointer (alamat) ke simpul berikutnya. Disamping itu, Daftar juga memerlukan suatu variabel, misalnya, yang berisi alamat simpul pertama dari senarai berantai, dan pointer sentinel, yang bernama Kosong, yang menunjukkan akhir sebuah senarai berantai. Karena subskrib untuk vektor Info dan Sambungan selalu positif dan lebih besar dari 0, maka untuk pointer sentinel bisa kita tulis sebagai kosong = 0. Gambar dibawah ini menunjukkan bagaimana penyajian senarai berantai Daftar disajikan memori.

struktur data fd [page 2 of 7] INFO SAMBUNGAN 1 C 5 2 A 6 2 3 4 D 10 5 B 1 6 7 F 0 8 9 10 E 8 Gambar 2. Contoh penyajian senarai berantai dalam memori Dari Gambar 2 diatas dapat kita lihat bahwa : = 2, maka Info[ 2] = A Sambungan[ 2] = 6, maka Info[ 6] = B Sambungan[ 6] = 1, maka Info[ 1] = C Sambungan[ 1] = 5, maka Info[ 5] = D Sambungan[ 5] = 10, maka Info[10] = E Sambungan[10] = 8, maka Info[ 8] = F Sambungan[ 8] = 0, akhir senarai berantai sehingga kita dapat memperoleh rangkaian ABCDEF. Operasi pada Senarai Berantai Unutk menjelaskan operasi pada senarai, kita gunakan deklarasi pointer dan simpul sebagai berikut : type Simpul Data = ^Data; = record Info : char; Berikut : Simpul; var Elemen : char;,,,, : Simpul; 1. Menambah Simpul Operasi menambah simpul bisa dipecah menjadi 3 bagian berdasarkan posisi simpul baru yang akan disisipkan, yaitu : -. simpul baru yang selalu ditambahkan dibelakang simpul terakhir -. simpul baru yang diletakkan sebagai simpul pertama -. simpul baru yang diletakkan diantara 2 simpul yang lain. Menambah di belakang :

struktur data fd [page 3 of 7] Gambar 3. Penambahan simpul di akhir senarai Prosedur untuk menambah simpul di belakang : procedure Tambah_Belakang(var, : Simpul; Elemen : char); var : Simpul; new(); ^.Info := Elemen; if = nil then { jika senarai masih kosong } := ^.Berikut := ; { Gambar 3 (2) } := ; { Ganbar 3 (3) } ^.Berikut := nil; Menambah di depan : Gambar 4. Penambahan simpul di awal senarai procedure Tambah_Depan(var, : Simpul; Elemen : char); var : Simpul; new(); ^.Info := Elemen; if = nil then { jika senarai masih kosong } := ^.Berikut := ; { Gambar 4 (2) } := ; { Ganbar 4 (3) }

struktur data fd [page 4 of 7] Menambah di tengah : A B D F C A B D F C A B D F C Gambar 5. Penambahan simpul di tengah senarai procedure Tambah_Tengah(var, : Simpul; Elemen : char); var, : Simpul; new(); ^.Info := Elemen; if = nil then { jika senarai masih kosong } := ; := { mencari lokasi yang sesuai } := ; while Elemen > ^.Berikut^.Info do := ^.Berikut; { menyisipkan simpul baru } ^.Berikut := ^.Berikut; { Ganbar 5 (2) } ^.Berikut := ; { Ganbar 5 (3) }

struktur data fd [page 5 of 7] 2. Menghapus Simpul Menghapus simpul pertama : B C D F Gambar 6. Penghapusan simpul di awal senarai Menghapus simpul di tengah : A B D F Gambar 7. Penghapusan simpul di tengah senarai Menghapus simpul terakhir :

struktur data fd [page 6 of 7] A B C D Gambar 8. Penghapusan simpul di akhir senarai procedure (var, : Simpul; Elemen : char); var, : Simpul; if = nil then { jika senarai masih kosong } writeln( Senarai masih kosong ) if ^.Info = Elemen then { simpul pertama yang dihapus } := ; { Ganbar 6 (1) } := ^.Berikut; { Ganbar 6 (2) } ^.Berikut := 0; dispose(); end { menghapus simpul di tengah atau terakhir } := ; { mencari simpul yang akan dihapus } while (Elemen <> ^.Info) and (^.Berikut <> nil) do := ^.Berikut; := ^.Berikut; if <> nil then { simpul yang akan dihapus ketemu } if <> then { simpul di tengah dihapus } { Ganbar 7 (2) } ^.Berikut := ^.Berikut; { simpul terakhir dihapus } { Ganbar 8 (2) } := ; end { Ganbar 8 (3) } ^.Berikut := nil; ^.Berikut := 0; dispose(); { simpul yang akah dihapus tidak ketemu } wtiteln( Simpul yang akan dihapus tidak ketemu! ); 3. Membaca isi Senarai Untuk pembacaan isi senarai maka dapat dilakukan mulai dari simpul menuju ke simpul. A B C D procedure Baca(var, : Simpul; Elemen : char); var : Simpul; := ; repeat

struktur data fd [page 7 of 7] write(^.info); := ^.Berikut; until = nil; writeln; 4. Mencari Data Secara garis besar, proses untuk mencari data dalam senarai hampir sama dengan proses untuk membaca senarai, hanya perlu menambahkan pengujian apakah data yang dicari ada atau tidak. Pencarian akan dilakukan mulai dari simpul sampai. function Ada_Data( : Simpul; Elemen : char):boolean; var Ketemu : boolean; Ketemu := false; repeat if ^.Info = Elemen then Ketemu := true; := ^.Berikut; until Ketemu or ( = nil); Ada_Data := Ketemu;