BAB IX LINKED LIST (SENARAI BERANTAI)

dokumen-dokumen yang mirip
BAB IX LINKED LIST (SENARAI BERANTAI)

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

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

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

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

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

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

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

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

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

KERUGIAN DAN KEUNTUNGAN LINKED LIST

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

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

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

LAPORAN PRAKTIKUM IX. Oleh:

BAB VII SENARAI BERANTAI (List)

Lab. Teknik Informatika Struktur Data 1

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

SINGLE LINKED LIST (NON CIRCULAR)

MODUL 6 SINGLE & DOUBLE LINKED LIST

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

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

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data

LIST. Dewi Sartika, M.Kom

ALGORITMA DAN STRUKTUR DATA

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

KONSEP POINTER DAN LINKED LIST

LIST BERKAIT(LINKED LIST)

Linked List. Bandung 2013

ALGORITMA & PEMROGRAMAN

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

Algoritma Pemrograman & Struktur Data

KONSEP POINTER DAN LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

KONSEP POINTER DAN LINKED LIST

STRUKTUR DATA. Literatur

KONSEP POINTER DAN LINKED LIST

A. TUJUAN PEMBELAJARAN

BAB II STACK Atau TUMPUKAN

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

BAB II STACK (TUMPUKAN)

STRUKTUR DATA (2) Single Linked List

Single Linked List (1)

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

Variasi List Linier. Nisa ul Hafidhoh, MT

Array VS Linked List

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

List Berkait(Linked List) Overview. Tujuan Instruksional

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

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

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

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

QUEUE (ANTRIAN) Struktur Data - Queue

LOGO STRUKTUR DATA QUEUE

Buku Ajar Struktur Data

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

Struktur Data. PDE - Struktur Data 1

Struktur Data II. Single Linked List - Non circular

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

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

BAB III QUEUE (ANTRIAN)

SEARCHING (PENCARIAN)

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

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

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

2 SENARAI/LIST BERANTAI GANDA

SENARAI BERANTAI (LINK LIST)

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

Algoritma dan Struktur Data. Ramos Somya

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

05. Double Linked List

BAB II Senarai Berantai (Linked List)

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

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

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

IKG2A3/ Pemrograman Terstruktur 2

STRUKTUR DATA single linked list non circular

BAB V LINKED LIST. Pointer A 50 B Alamat Memori. Gambar 5-1 : Logika Linked List

6. TREE / BINARY TREE

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

Queue. Implementasi Queue dengan Array

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2017

Praktikum Algoritma dan Struktur Data

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

Review : Sifat Implementasi Linear List dengan Array

PENCARIAN KITAB BESERTA PASAL PADA ALKITAB BERDASARKAN KATA DENGAN MENGGUNAKAN STRUKTUR DATA TRIE

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

Pengantar List Linier

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

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

Struktur Data. Queue (Antrian)

PRAKTIKUM 9 ORGANISASI FILE/PENGOLAHAN DATA DENGAN FILE BERTIPE

A. TUJUAN PEMBELAJARAN

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

4. STACK / TUMPUKAN TEORI PENUNJANG

Transkripsi:

BAB IX LINKED LIST (SENARAI BERANTAI) Double Linked List Double Linked List adalah suatu linked list yang mempunyai penunjuk yaitu penunjuk ke data sebelumnya dan berikutnya. Perhatikan gambar di bawah ini : 4 Beberapa operasi yang dapat dilakukan dalam double linked list adalah : 1. Pendeklarasian Struktur dan Variabel Double Linked List Jika dilihat 1 elemen listnya, maka secara umum struktur dari elemen listnya adalah sebagai berikut : Kiri Info Kanan Dari gambar di atas, untuk setiap elemen terdiri dari 3 buah field yaitu kiri (prev), info (data), dan kanan (next). Field kiri dan kanan merupakan sebuah pointer ke data struktur elemen (data). Pendeklarasian struktur double linked list dalam bahasa Pascal adalah : Type elemen = integer; simpul = ^data; Data = record Info : elemen; Kiri, kanan : simpul; End; Var awal, akhir : simpul; Kondisi awal ketika awal dan akhir telah dideklarasikan.. View data Untuk view data, langkah yang dilakukan adalah dengan menelusuri semua elemen list sampai elemen terakhir. Setelah melakukan penelurusan posisi awal dan akhir elemen tidak boleh berubah sehingga untuk melakukan penelusuran dibutuhkan sebuah variabel bantu. Halaman. 1

Kelebihan dari view data pada linked list adalah kita dapat menampilkan data dari data terakhir dengan lebih mudah. 3. Tambah di awal Operasi ini berguna untuk menambahkan elemen baru di posisi pertama. Langkah pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai infonya. Pointer yang menunjuk ke data tersebut dipanggil dengan nama baru. Kondisi di setelah ada pembuatan elemen baru tersebut adalah : Perhatikan gambar di bawah ini : Kondisi sebelum disisipkan Kondisi setelah operasi penambahan Operasi penambahan awal ketika linked list masih kosong adalah dengan mengisikan alamat pointer baru ke pointer awal dan pointer akhir. Lihat gambar di bawah ini. a. Ketika linked list sudah mempunyai data Kondisi linked list ketika sudah mempunyai data elemen dan elemen yang baru telah dibuat, dapat dilihat di gambar di bawah ini. Proses penambahan data di awal linked list adalah : Hubungkan baru kanan agar menunjuk ke awal Halaman.

Hubungkan awal kiri agar menunjuk ke posisi pointer baru Pindahkan pointer awal ke pointer baru 4. Tambah di akhir Operasi ini berguna untuk menambahkan elemen baru di posisi akhir. Langkah pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai infonya. Pointer yang menunjuk ke data tersebut dipanggil dengan nama baru. Kondisi di setelah ada pembuatan elemen baru tersebut adalah : Perhatikan gambar di bawah ini : Kondisi sebelum penambahan Kondisi setelah operasi penambahan Halaman. 3

Operasi penambahan awal ketika linked list masih kosong adalah dengan mengisikan alamat pointer baru ke pointer awal dan pointer akhir. Lihat gambar di bawah ini. Kondisi linked list ketika sudah mempunyai data elemen dan elemen yang baru telah dibuat, dapat dilihat di gambar di bawah ini. Proses penambahan data di akhir linked list adalah : Hubungkan akhir kanan agar menunjuk ke pointer baru Hubungkan baru kiri agar menunjuk ke posisi pointer akhir Pindahkan pointer akhir ke pointer baru. Sisip di tengah Operasi penyisipan data di tengah linked list adalah suatu operasi menambah data di posisi tertentu di dalam linked list. Contohnya adalah jika ingin menyisipkan data di posisi ke-3 atau ke-4. Halaman. 4

Untuk proses tersebut ada hal yang harus diperhatikan yaitu : a. Kondisi linked list masih kosong atau posisi penyisipan kurang dari atau sama dengan 1 Jika kondisi ini terjadi, maka langkah yang dilakukan adalah sangat mudah yaitu dengan memanggil proses penambahan data awal atau akhir. (untuk lebih jelas lihat penambahan data awal atau akhir ketika kondisi linked list masih kosong). b. Kondisi linked list sudah mempunyai data Langkah untuk penyisipan data ketika linked list sudah mempunyai data adalah : Cari posisi pointer pada data ke-posisi sisip. Setelah posisi penyisipan (bantu) ditemukan, maka periksa apakah posisi penyisipan (bantu) bernilai NIL atau tidak. Jika posisi penyisipan (bantu) bernilai NIL berarti posisi sisip berada di luar atau melebihi linked list. Oleh karena itu berarti penambahan datanya dilakukan dengan melakukan operasi penambahan akhir. Jika posisi penyisipan (bantu) tidak sama dengan NIL, maka itu berarti posisi penyisipan ada di dalam jangkauan linked list. Proses yang dilakukan untuk penyisipannya adalah : - Buat elemen baru di memori dan isi infonya (contoh data info = ). - Untuk mempermudah proses penyambungan/penyisipan data baru, maka buat variabel pointer baru dengan nama bantu untuk memegang data di sebelah kiri dari posisi sisip (bantu kiri). (Contoh posisi penyisipan adalah 3) bantu bantu 10 - Isi baru kiri dengan pointer bantu bantu bantu 10 - Isi/sambungkan baru kanan ke pointer bantu Halaman.

bantu bantu 10 - Isi/sambungkan bantu kiri ke posisi pointer baru bantu bantu 10 - Isi/sambungkan bantu kanan ke posisi pointer baru bantu bantu 10 6. Hapus data awal Operasi ini berguna untuk menghapus data pada posisi pertama. Ada 3 keadaan yang mungkin terjadi ketika akan melakukan proses hapus yaitu : a. Kondisi linked list masih kosong Jika kondisi ini terjadi, maka proses penghapusan data tidak bisa dilakukan karena linked list masih kosong. b. Kondisi linked list hanya memiliki 1 data Langkah yang perlu dilakukan ketika ingin melakukan proses penghapusan linked list yang memiliki hanya 1 data adalah dengan langsung menghapus data dari memori dan kemudian pointer awal dan akhir di-nil-kan. Untuk lebih jelas perhatikan urutan penghapusannya di bawah ini : Kondisi data sebelum dihapus Halaman. 6

Proses penghapusan yaitu dengan menghilangkan data dari memori. menjadi Kemudian pointer awal dan akhir diisi dengan NIL. c. Kondisi linked list memiliki data lebih dari 1 buah Untuk operasi penghapusan data di posisi pertama pada double linked list yang mempunyai data lebih dari 1 buah adalah : Simpan pointer yang akan dihapus (awal) ke suatu pointer lain yang diberi nama pointer bantu. Bantu 4 Pindahkan pointer awal ke data berikutnya (bantu kanan atau awal kanan). Bantu 4 Field kiri dari awal yang baru (awal kiri) di-nil-kan. Bantu 4 Langkah terakhir adalah hapus elemen yang ditunjuk pointer bantu. Halaman.

Bantu 4 Setelah data dihapus, maka kondisi linked list adalah seperti di gambar di bawah ini. 4. Hapus data terakhir Operasi ini berguna untuk menghapus data pada posisi terakhir. Ada 3 keadaan yang mungkin terjadi ketika akan melakukan proses hapus yaitu : a. Kondisi linked list masih kosong Jika kondisi ini terjadi, maka proses penghapusan data tidak bisa dilakukan karena linked list masih kosong. b. Kondisi linked list hanya memiliki 1 data Langkah yang perlu dilakukan ketika ingin melakukan proses penghapusan linked list yang memiliki hanya 1 data adalah dengan langsung menghapus data dari memori dan kemudian pointer awal dan akhir di-nil-kan. Untuk lebih jelas perhatikan urutan penghapusannya di bawah ini : Kondisi data sebelum dihapus Proses penghapusan yaitu dengan menghilangkan data dari memori dengan perintah free(awal) atau free(akhir). menjadi Kemudian pointer awal dan akhir diisi dengan NIL. c. Kondisi linked list memiliki data lebih dari 1 buah Untuk operasi penghapusan data di posisi terakhir pada double linked list yang mempunyai data lebih dari 1 buah adalah : Halaman.

Simpan pointer yang akan dihapus (akhir) ke suatu pointer lain yang diberi nama pointer bantu. Bantu 4 Pindahkan pointer akhir ke data sebelumnya (bantu kiri atau akhir kiri). Bantu 4 Field kanan dari akhir baru (akhir kanan) di-nil-kan. Bantu 4 Langkah terakhir adalah hapus elemen yang ditunjuk pointer bantu. Bantu 4 Setelah data dihapus, maka kondisi linked list adalah seperti di gambar di bawah ini. 4. Hapus data di tengah Untuk melakukan proses penghapusan di tengah linked list, ada 3 kondisi yang perlu diperhatikan yaitu : a. Kondisi ketika linked list masih kosong atau ketika posisi hapus lebih kecil dari 1. Ketika kondisi ini terjadi, maka proses penghapusan tidak bisa dilakukan karena data masih kosong atau karena posisi hapus diluar jangkauan linked list (posisi kurang dari 1). b. Kondisi ketika posisi hapus sama dengan 1 (hapus data pertama) Ketika kondisi ini terjadi, maka proses yang dilakukan adalah proses penghapusan di posisi awal (hapusawal). c. Kondisi ketika posisi hapus lebih besar dari 1 Langkah-langkah untuk penghapusan data di tengah linked list yang posisi hapusnya lebih besar dari 1 adalah : Halaman.

Cari pointer yang menunjuk ke data pada posisi ke-posisi hapus. Ketika kondisi ini, ada kemungkinan yang bisa terjadi yaitu posisi hapus ada di dalam jangkauan linked list atau di luar linked list. Setelah pointer posisi penghapusan telah ditemukan, maka langkah selanjutnya adalah pemeriksaan apakah posisi penghapusan (bantu) tersebut bernilai NIL (diluar jangkauan linked list). Jika posisi penghapusan (bantu) bernilai NIL maka proses penghapusan tidak bisa dilakukan. Tetapi jika bantu tidak bernilai NIL, maka lanjutkan ke langkah berikutnya. Periksa juga apakah pointer posisi penghapusan (bantu) sama dengan posisi akhir, jika benar maka proses penghapusan yang dilakukan adalah proses penghapusan akhir. Tetapi jika posisi penghapusan tidak sama dengan posisi akhir itu menunjukan posisi penghapusan ada di tengah. Halaman. 10