KERUGIAN DAN KEUNTUNGAN LINKED LIST

dokumen-dokumen yang mirip
List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

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

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

BAB VII SENARAI BERANTAI (List)

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

Lab. Teknik Informatika Struktur Data 1

BAB IX LINKED LIST (SENARAI BERANTAI)

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

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

ALGORITMA & PEMROGRAMAN

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

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

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

Linked List. Bandung 2013

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

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

2 SENARAI/LIST BERANTAI GANDA

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

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

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Double Linked List DIKTAT KULIAH. Pertemuan 6

SINGLE LINKED LIST (NON CIRCULAR)

BAB III QUEUE (ANTRIAN)

SENARAI BERANTAI (LINK LIST)

MODUL 6 SINGLE & DOUBLE LINKED LIST

KONSEP POINTER DAN LINKED LIST

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

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

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

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Queue. Implementasi Queue dengan Array

4. STACK / TUMPUKAN TEORI PENUNJANG

KONSEP POINTER DAN LINKED LIST

LAPORAN PRAKTIKUM IX. Oleh:

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

{ Program Pointer Pertama } { Program Pointer Single Linklist }

BAB XI Manipulasi Binary Tree

Algoritma dan Struktur Data

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

Algoritma dan Struktur Data. Pertemuan 7 Linked List

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

BAB II Senarai Berantai (Linked List)

STRUKTUR DATA. Literatur

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

Linked List dan Implementasinya dalam Bahasa Java

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Variasi List Linier. Nisa ul Hafidhoh, MT

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

LOGO STRUKTUR DATA QUEUE

Struktur Data. Queue (Antrian)

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

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

BAB II STACK Atau TUMPUKAN

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

6. TREE / BINARY TREE

Praktikum Algoritma dan Struktur Data

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

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

MODUL PRAKTIKUM STRUKTUR DATA

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

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Pertemuan VI ANTRIAN (Queue)

Bagian I. Studi Kasus [82] Tanda tangan:

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

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

LIST. Dewi Sartika, M.Kom

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

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

Algoritma Pemrograman & Struktur Data

QUEUE (ANTRIAN) Struktur Data - Queue

Struktur. Bab 4: Linked LIst 4/8/2015

LIST BERKAIT(LINKED LIST)

STRUKTUR DATA (2) Single Linked List

A B C E F G K Contoh Tree

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

Linked List 6.3 & 7.3 NESTED LOOP

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

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

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

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

BAB 1 PENGANTAR KE STRUKTUR DATA

Algoritma dan Struktur Data. Ramos Somya

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

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

05. Double Linked List

ALGORITMA DAN STRUKTUR DATA

Single Linked List (1)

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

Tutorial - Single Linked List

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Struktur Data II. Single Linked List - Non circular

Pointer. Pengertian. Struktur Data Pascal

Dasar Komputer & Pemrograman 2A

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Array VS Linked List

Transkripsi:

KERUGIAN AN KEUNTUNGAN LINKE LIST KERUGIANNYA AALAH : 1. iperlukan ruang tambahan untuk menyatakan/tempat field pointer. 2. iperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list. KEUNTUNGANNYA AALAH : 1. Jenis data yang berbeda dapat di-link. 2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya saja.

Bab IX. OUBle linked list (Senarai bertantai GANA)

ouble Link List adalah link list yang memiliki dua buah pointer yang menunjuk ke simpul sebelah kiri atau sebelumnya (Prev) dan yang menunjuk ke simpul sebelah kanan atau sesudahnya (Next). Link list seperti ini disebut dengan Seranai Beranai Ganda atau disebut juga dengan Two Way List. Ada dua jenis Senarai Berantai Ganda (ouble Linked List) : 1. ouble Linked List (Non Circular) 2. ouble Linked List Circular

Hal-hal yang harus diperhatikan!!! 1. ouble Link list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list yang disebut Head. 2. ouble Link list juga selalu memiliki pointer petunjuk menunjuk pada akhir dari list yang disebut Tail. 3. Setiap simpul yang terbentuk selalu memiliki nilai NIL, kecuali jika simpul tersebut sudah ditunjuk oleh simpul yang lainnya (ouble Link list belum terhubung). 4. Posisi simpul terakhir pada oube link list selalu bernilai NIL karena ia tidak menunjuk pada simpul yang lainnya, kecuali bentuk circular. 5. Operasi yang dapat dilakukan pada ouble Link List diantaranya adalah : a. Menambah Simpul (di epan, Belakang dan Tengah). b. Menghapus Simpul (di epan, Belakang dan Tengah). c. Membaca isi link list (Membaca maju dan mundur).

jenis ouble Linked List 2 jenis ouble Linked List, yaitu: 1. ouble Linked List Non Circular 2. ouble Linked List Circular

ouble Linked List Non Circular phead (phead : pointer yang menunjuk node pertama) next data pointer NIL A B C NIL previous Setiap node/field pada linked list mempunyai field yang berisi data dan pointer. Node-node saling berkait melalui pointer Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke nilai NIL. Pointer prev akan menunjuk ke node sebelumnya, dan pointer next akan menunjuk ke node selanjutnya.

ouble Linked List Circular Jenis linked list ini merupakan jenis double linked list yang memiliki simpul kepala dan tidak mempunyai tail (Head = Tail). Fungsi simpul kepala dapat digunakan untuk menyimpan informasi tambahan pada list. Head prior info next...

operasi ouble Linked List 1. Menambah Simpul (Node) i. Menambah Simpul Belakang ii. Menambah Simpul epan iii. Menambah Simpul Tengah 2. Menghapus Simpul (Node) i. Menghapus Simpul epan ii. Menghapus Simpul Tengah iii. Menghapus Simpul Belakang 3. Membaca Isi i. Membaca Maju ii. Membaca Mundur

eklarasi Pointer dan Simpul Type Simpul = ^ata ata = Record Info : char; Berikut : Simpul; End; Var Elemen : char; Awal,, Baru : Simpul;

1. Menambah Simpul (Node) i. Menambah Simpul Belakang ii. iii. Menambah Simpul epan Menambah Simpul Tengah

Penambahan simpul di belakang membutuhkan pointer bantu untuk mengetahui data terbelakang, kemudian dikaitkan dengan data baru. Simpul baru yang ditambahkan menjadi simpul akhir. Awal A B C A B C Baru Pointer Awal adalah pointer yang menunjuk ke simput pertama, pointer menunjuk ke simpul terakhir dan simpul yang ditunjuk oleh pointer Baru adalah simpul yang akan ditambahkan. Awal Awal i. Menambah Simpul Belakang Ilustrasi penambahan Simpul Belakang Baru Untuk menyambung simpul yang ditunjuk oleh dan Baru, pointer pada simpul yang ditunjuk oleh simpul dibuat sama dengan Baru Baru F F A B C Pointer dibuat sama dengan pointer Baru F

alam operasi ini perlu ditest apakah senarai berantai masih kosong atau tidak. Senarai berantai yang masih kosong ditandai dengan nilai pointer Awal yang nilainya sama dengan NIL TAMBAH_BELAKANG (var Awal,, Elemen); procedure TAMBAH_BELAKANG (var Awal, : Simpul ; Elemen : char ) ; var Baru : Simpul ; begin new (Baru) ; Baru^.Info :=Elemen; if Awal = nil then {* senarai masih kosong *} Awal := Baru else ^.Berikut := Baru; := Baru; ^.Berikut := nil end ;

ii. Menambah Simpul epan Penambahan simpul di depan membutuhkan pointer bantu (baru) untuk menambah simpul di awal senarai berantai, kemudian dikaitkan dengan simpul awal. Simpul baru yang ditambahkan menjadi simpul pertama Baru Ilustrasi penambahan Simpul epan Awal A B C F Baru Awal A B C F Pertama kali pointer pada simpul yang ditunjuk oleh pointer Baru dibuat sama dengan Awal Awal Awal A B C F Kemudian Awal dibuat sama dengan Baru

alam operasi ini perlu juga ditest apakah apakah Awal masij nil atau tidak. TAMBAH_EPAN (var Awal,, Elemen); procedure TAMBAH_BELAKANG (var Awal, : Simpul ; Elemen : char ) ; var Baru : Simpul ; begin new (Baru) ; Baru^.Info :=Elemen; if Awal = nil then {* senarai masih kosong *} := Baru else Baru^.Berikut := Awal; Awal := Baru; end ;

iii. Menambah Simpul Tengah Penambahan simpul di tengah membutuhkan pointer bantu (baru) untuk diletakkan setelah simpul yang ditunjuk oleh ponter Bantu. Awal Bantu A B F Baru C Pertama kali ditentukan di mana simpul baru akam ditambahkan, yaitu dengan menempatkan pointer Bantu pada suatu tempat.

Awal Bantu A B F Baru C Kemudian pointer pada simpul yang ditunjuk oleh Baru dibuat sama dengan pointer pada simpul yang ditunjuk oleh Bantu Awal Bantu A B F Baru C Selanjutnya pointer pada simpul yang ditunjuk oleh simpul Bantu dibuat sama dengan Baru.

procedure TAMBAH_TENGAH (var Awal, : Simpul ; Elemen : char ) ; var Baru, Bantu : Simpul ; begin new (Baru) ; Baru^.Info :=Elemen; if Awal = nil then begin Awal := Baru; := Baru; end; else begin {* 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; end; end ;

2. Menghapus Simpul (Node) i. Menghapus Simpul epan ii. iii. Menghapus Simpul Tengah Menghapus Simpul

Awal Ilustrasi penghapusanj Simpul Belakang Bantu A B C E Letakkan pointer bantu pada simpul akhir yang akan dihapus Awal Bantu A B C NIL E Pindahkan pointer akhir ke data sebelumnya, kemudian field kanan pointer akhir diberi nilai NIL Awal A B C Hapus simpul yang ditunjuk oleh pointer Bantu

Ilustrasi penghapusanj Simpul epan Awal Bantu A B C Buat pointer Bantu sama dengan pointer Awal E Bantu Awal A B C E Pointer Awal dipindahkan ke simpul Berikut (sebelah kanan) sesudah simpul yang ditunjuk pointer Bantu Awal B C E Hapus simpul yang ditunjuk oleh pointer Bantu

iii. Menghapus Simpul Tengah Penghapusan simpul di tengah membutuhkan pointer bantu pada simpul sebelum simpul yang akan di hapus dan pointer lainnya (Hapus) pada simpul yang akan dihapus. Ilustrasi penghapusanj Simpul Tengah Awal Bantu Hapus A B C E Letakkan pointer Bantu pada simpul di sebelah kiri sampul yang akan dihapus Simpul yang akan dihapus kita tunjuk dengan pointer lain, mis, Hapus

Awal Bantu Hapus A B C E Simpul yang ditunjuk oleh pointer Bantu dihubungkan dengan simpul sebelah kanan simpul yang akan dihapus yang ditunjuk oleh pointer Hapus. Awal A B E Kemudian simpul yang ditunjuk oleh pointer Hapus kita dispose

procedure HAPUS_SIMPUL (var Awal, ; Simpul; Elemen : char); var Bantu, Hapus : Simpul; begin if awal <> nil then {*senarai masih kosong*} Writeln ( senarai masih kosong ) else if Awal^.Info=Elemen then {* simpul pertama dihapus) Begin Hapus := Awal; Awal := Hapus^.Berikut; dispose(hapus) end else {*menghapus simpul tengah atau terakhir*} begin Bantu := Awal; {*mencari simpul yang akan dihapus*} while (Elemen <> Bantu^.Info) and (Bantu^.Berikut <> nil) do

end end; else Bantu := Bantu^.Berikut; Hapus := Bantu^.Berikut; if Hapus <> nil then {*simpul yang akan dihapus ketemu*} begin if Hapus <> the {*simpul tengah di hapus*} Bantu^.Berikut := Hapus^.Berikut else {*simpul terakhir dihapus*} begin := Bantu; ^.Berikut :=nil end; dispose(hapus) end {*simpul yang akan dihapus tidak ketemu*} writeln( simpul yang akan dihapus tidak ada*)

3. Membaca Isi i. Membaca Maju ii. Membaca Mundur

a. Membaca Maju Membaca maju artinya membaca isi seranai beranai mulai posisi Head sampai ke posisi Tail, dari simpul paling kiri sampai simpul paling kanan (membaca maju). Pertama kali kita atur supaya pointer Bantu menunjuk ke simpul yang ditunjuk oleh pointer Awal. Setelah isi simpul itu dibaca, maka pointer Bantu kita gerakkan ke kanan untuk membaca simpul berikutnya. Proses ini kita ulang sampai pointer Bantu sama dengan pointer.

Illustrasi Pembacaan Maju Awal Bantu A B C F

Procedure Baca_Maju (Awal, : Simpul); var Bantu : Simpul; begin Bantu := Awal; repeat write (Bantu^.Info: ); Bantu := Bantu^.Berikut until Bantu = nil; writeln end;

b. Membaca Mundur Membaca mundur artinya membaca isi seranai beranai mulai posisi Tail sampai ke posisi Head, membaca dari kanan ke kiri. Ada 2 cara membaca mundur isi dari Senarai Berantai, yaitu dengan cara biasa seperti diatas atau dengan memanfaatkan proses rekursi. Cara pertama yaitu kita atur pointer Bantu sama dengan pointer Awal. Berikutnya, pointer Awal kita arahkan ke simpul dan kita pakai pointer lain misalkan Bantu1 untuk bergerak dari simpul pertama sampai simpul sebelum simpul terakhir. Langkah selanjutnya adalah mengarahkan medan pointer dari simpul terakhir ke simpul Bantu1. Langkah ini diulang sampai pointer berimpit dengan pointer Bantu. Cara kedua dengan rekursi. Caranya hampir sama dengan cara membaca senarai berantai secara maju hanya saja pencetakan isi simpul ditunda sampai pointer Bantu sama dengan pointer akhir.

Illustrasi Pembacaan Mundur Awal Bantu A B C F

Procedure Baca_Mundur (Bantu : Simpul); begin If Bantu <> nil then begin Mundur (Bantu^.Berikut); write (Bantu^.Info: ) end; end