BAB VII SENARAI BERANTAI (List)

dokumen-dokumen yang mirip
KERUGIAN DAN KEUNTUNGAN LINKED LIST

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

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

BAB IX LINKED LIST (SENARAI BERANTAI)

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

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

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

Lab. Teknik Informatika Struktur Data 1

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

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

ALGORITMA & PEMROGRAMAN

{ Program Pointer Pertama } { Program Pointer Single Linklist }

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

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

2 SENARAI/LIST BERANTAI GANDA

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

Linked List. Bandung 2013

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

4. STACK / TUMPUKAN TEORI PENUNJANG

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

SENARAI BERANTAI (LINK LIST)

BAB II Senarai Berantai (Linked List)

Queue. Implementasi Queue dengan Array

LIST. Dewi Sartika, M.Kom

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

6. TREE / BINARY TREE

KONSEP POINTER DAN LINKED LIST

Pertemuan VI ANTRIAN (Queue)

SINGLE LINKED LIST (NON CIRCULAR)

BAB II STACK Atau TUMPUKAN

BAB XI Manipulasi Binary Tree

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

BAB III QUEUE (ANTRIAN)

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

Single Linked List (1)

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

MODUL 6 SINGLE & DOUBLE LINKED LIST

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

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

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

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

Algoritma Pemrograman & Struktur Data

QUEUE (ANTRIAN) Struktur Data - Queue

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

LAPORAN PRAKTIKUM IX. Oleh:

Double Linked List DIKTAT KULIAH. Pertemuan 6

LIST LINIER 1. DEFINISI

A B C E F G K Contoh Tree

ALGORITMA DAN STRUKTUR DATA

KONSEP POINTER DAN LINKED LIST

Bagian I. Studi Kasus [82] Tanda tangan:

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

Algoritma dan Struktur Data. Pertemuan 7 Linked List

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

LOGO STRUKTUR DATA QUEUE

Algoritma dan Struktur Data

KONSEP POINTER DAN LINKED LIST

SEARCHING (PENCARIAN)

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

IKG2A3/ Pemrograman Terstruktur 2

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

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

MODUL PRAKTIKUM STRUKTUR DATA

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

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

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

Praktikum 3. Konsep double linked list Struktur double linked list Implementasi double linked list dalam Bahasa C

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

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

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Linked List 6.3 & 7.3 NESTED LOOP

Struktur Data. Queue (Antrian)

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

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

Review : Sifat Implementasi Linear List dengan Array

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

BAB X Hashing. typedef char *NomorBuku[100]; Buku = NomorBuku;

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

LIST BERKAIT(LINKED LIST)

Buku Ajar Struktur Data

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

S T A C K ( T U M P U K A N )

KONSEP DASAR BAHASA PASCAL

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

TREE STRUCTURE (Struktur Pohon)

BAB V SORTING (PENGURUTAN) INTERNAL

STRUKTUR DATA. Literatur

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

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

Struktur Data. PDE - Struktur Data 1

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

Transkripsi:

BAB VII SENARAI BERANTAI (List) Dalam kehidupan sehari-hari, senarai (List ) adalah kumpulan linear sejumlah data. Gambar dibawah ini menunjukkan senarai yang berisi daftar belanjaan, yang berupa barang pertama, kedua, ketiga dan seterusnya (gambar a). Untuk hari berikutnya, maka gambar tersebut bisa berubah sesuai dengan barang yang harus dibeli atau yang tidak perlu dibeli lagi. (Gambar b). Pepsodent Kain Pel Rinso Sabun Pepsodent Kain Pel Rinso Sabun Sikat Gigi Garam Ember ( a ) (b) Gambar. Daftar barang belanjaan (List) Pengolahan data yang kita lakukan menggunakan komputer seringkali mirip dengan ilustrasi di atas, yang antara lain berupa penyimpanan data dan pengolahan lain dari sekelompok data yang telah terorganisir dalam sebuah urutan tertentu. Dalam pemakaian sehari-hari istilah senarai (list) adalah kumpulan linier sejumlah data yang saling berkait. Kaitan itu dilakukan oleh pengait (pointers). Setiap Node/Simpul Universitas Bina Darma Praktikum Struktur Data 45

terdiri dari dua bagian, yaitu : nilai data (info) dan pengait (link/link field/next ponter) yang berisi alamat elemen berikutnya dalam daftar. Node terakhir berisi pengait dengan nilai spesial yang disebut dengan null pointer. 7.1 Deklarasi Simpul dengan Pointer Type Simpul = ^Data; Data = Record Info : char; Berikut : Simpul; Elemen : char; Awal, Akhir, Baru : Simpul; 7.2 Menambah Simpul Operasi penambahan simpul dibedakan berdasarkan posisi simpul baru yang akan disisipkan, yaitu : 7.2.1 Penambahan simpul di Belakang Secara garis besar, operasi penambahan di akhir list dijelaskan sebagai berikut : Pointer Awal adalah pointer yang menunjuk ke simpul pertama, pointer Akhir menunjuk ke simpul terakhir dan simpul yang ditunjuk oleh pointer Baru adalah simpul yang akan ditambahkan. Universitas Bina Darma Praktikum Struktur Data 46

Untuk menyambung simpul yang ditunjuk oleh Akhir dan Baru, pointer pada simpul yang ditunjuk oleh simpul Akhir dibuat sama dengan Baru, kemudian pointer Akhir dibuat sama dengan pointer Baru. (* prosedure menambah simpul simpul baru diletakkan di akhir list Cara memanggil : Tambah_Belakang(Awal, Akhir, Elemen) Procedure Tambah_Belakang( Awal, Akhir : Simpul; Elemen : char); Baru : Simpul; New(Baru);Baru^.Info :=Elemen; If Awal = Nil Then (* list masih kosong Awal:=Baru Akhir^.Berikut := Baru; Akhir :=Baru; Akhir^.Berikut :=Nil; Universitas Bina Darma Praktikum Struktur Data 47

7.2.2 Penambahan simpul di Depan Secara garis besar, operasi penambahan di awal list dijelaskan sebagai berikut : 1. Pertama kali pointer pada simpul yang ditunjuk oleh pointer baru dibuat sama dengan Awal. 2. Kemudian Awal dibuat sama dengan Baru. Dengan cara sperti ini sinpul baru akan selalu diperlakukan sebagai simpul pertama dari dalam linked list (* Prosedur untuk menambah simpul Simpul Baru diletakkan di awal list berantai Cara memanggil : Tambah_Depan(Awal, Akhir, Elemen) Procdure Tambah_Depan( Awal, Akhir : Simpul; Elemen : Char); Baru : Simpul; New(Baru);Baru^.Info := Elemen; If Awal = Nil Then (* List masih kosong Akhir := Baru Baru^.Berikut := Awal; Awal := Baru; 7.2.3 Penambahan simpul di antara dua simpul yang sudah ada (Menambah di Tengah) Secara garis besar, operasi penambahan di awal list dijelaskan sebagai berikut : 1. Pertama kali ditentukan dimana simpul baru akan ditambahkan, yaitu dengan menempatkan pointer Bantu pada suatu tempat. Universitas Bina Darma Praktikum Struktur Data 48

2. Kemudian pointer pada simpul yang ditunjuk oleh Baru dibuat sama dengan pointer pada simpul yang ditunjuk oleh Bantu. 3. Selanjutnya pointer pada simpul yang ditunjuk oleh simpul simpul Bantu dibuat sama dengan Baru. Prosedurnya sebagai berikut : (* Prosedur untuk menambah simpul Simpul Baru diletakkan di tengah list berantai Cara memanggil : Tambah_Tengah(Awal, Akhir, Elemen) Procedure Tambah_Tengah( Awal, Akhir : Simpul; Elemen : Char); Baru, Bantu : Simpul; New(Baru);Baru^.Info := Elemen; If Awal = Nil Then (* List masih kosong Awal := Baru; Akhir := Baru; End (* mencari lokasi yang sesuai Bantu := Awal; While Elemen > Baru^.Berikut^.Info Do Bantu := Bantu^.Berikut; (*Menyisipkan simpul baru Baru^.Berikut := Bantu^.Berikut; Bantu^.Berikut : Baru; Universitas Bina Darma Praktikum Struktur Data 49

7.3 Menghapus Simpul Dalam menghapus simpul ada satu hal yang perlu diperhatikan, yaitu bahwa simpul yang bisa dihapus adalah simpul yang berada sesudah simpul yang ditunjuk oleh suatu pointer, kecuali untuk simpul pertama. 7.3.1 Menghapus Simpul Pertama Untuk menghapus simpul pertama, maka : Pointer Bantu kita buat sama dengan pointer Awal. Kemuadian pointer Awal kita pindah ke simpul yang ditunjuk oleh pointer pada simpul yang ditunjuk oleh pointer Bantu. Selanjutnya simpul yang ditunjuk oleh pointer Bantu kita Dispose. 7.3.2 Menghapus Simpul di Tengah atau Terakhir Untuk menghapus simpul yang ada di tengah list, maka : Pertama kali kita letakkan pointer Bantu pada simpul disebelah kiri simpul yang akan dihapus. Simpul yang akan dihapus kita tunjuk dengan pointer lain, misalnya Hapus. Kemudian pointer pada simpul yang ditunjuk oleh Bantu kita tunjukkan pada simpul yang ditunjuk oleh pointer pada simpul yang akan dihapus. Selanjutnya simpul yang ditunjuk oleh Pointer Hapus kita Dispose. Universitas Bina Darma Praktikum Struktur Data 50

Prosedur selengkapnya sebagai berikut : (* Prosedur untuk menghapus simpul Cara memanggil : Hapus_Simpul(Awal, Akhir, Elemen) Procedure Hapus_Simpul( Awal, Akhir : Simpul; Elemen : Char) Bantu, Hapus : Simpul; If Awal = nil Then (* list masih kosong Writeln( List masih kosong ) If Awal^.Info = Elemen Then (* simpul pertama yang dihapus Hapus := Awal; Awal := Hapus^.Berikut; Dispose(Hapus); End (* hapus simpul tengah atau terakhir Bantu := Awal; (* mencari simpul yg akan dihapus While (Elemen<>Bantu^.Info) AND (Bantu^.Berikut <> nil) Do Bantu := Bantu^.Berikut; Hapus := Bantu^.Berikut; If Hapus <> nil Then (* Simpul yang akan dihapus ketemu If Hapus <> Akhir Then (* Simpul tengah dihapus Bantu^.Berikut := Hapus^.Berikut (* simpul terakhir dihapus Akhir := bantu; Akhir^.Berikut := nil; Dispose(Hapus); Universitas Bina Darma Praktikum Struktur Data 51

End (* simpul yang akan dihapus tidak ketemu Writeln( simpul yang akan dihapus tidak ketemu ) 7.4 Membaca Isi Linked List 7.4.1 Membaca Maju Pembacaan Linked List secara maju bisa dijelaskan sebagai berikut : Pertama kali kita atur supaya pointer Bantu menunjuk ke simpul yang ditunjuk oleh pointer Awal. Setelah isi simpul tersebut dibaca, maka pointer Bantu kita gerakkan ke kanan untuk membaca simpul berikutnya. Proses ini kita ulang sampai pointer Bantu sama dengan pointer Akhir. Procedure untuk membaca Linked List tersebut sebagai berikut : (* Procedure untuk membaca Linked List Membaca dari Kiri ke Kanan Cara memanggil : Baca_Maju(Awal, Akhir) Procedure Baca_Maju(Awal, Akhir : Simpul); Bantu : Simpul; Bantu := Awal; Repeat Write(Bantu^.Info:2); Bantu := Bantu^.Berikut ; Until Bantu = nil; Writeln; Universitas Bina Darma Praktikum Struktur Data 52

7.4.2 Membaca Mundur Pembacaan Linked List secara mundur bisa dijelaskan sebagai berikut : Pertama kali kita atur pointer Bantu sama dengan pointer Awal. Berikutnya, pointer Awal kita kita arahkan ke simpul terakhir, dan kita pakai pointer lain Procedure untuk membaca Linked List tersebut sebagai berikut : (* Procedure untuk membaca Linked List Membaca dari Kanan ke Kiri (Mundur secara Rekursif) Cara memanggil : Mundur(Awal) Procedure Mundur(Bantu : Simpul); If Bantu <> Nil Then Mundur(Bantu^.Berikut); Write(Bantu^.Info); Tugas 12 : Buat Program aplikasi Linked List dari procedure-procedure yang telah tersedia di atas! Universitas Bina Darma Praktikum Struktur Data 53