• Tidak ada hasil yang ditemukan

Dokumen - IK - STMIK EL RAHMA Double linked list

N/A
N/A
Protected

Academic year: 2017

Membagikan "Dokumen - IK - STMIK EL RAHMA Double linked list"

Copied!
6
0
0

Teks penuh

(1)

Double linked list

Link list yang kita pelajari sebelumnya hanya mempunyai sebuah pointer pada setiap simpulnya.

Hal ini merupakan kelemahan bahwa link list tersebut hanya bisa dibaca dalam satu arah saja,

yaitu dari kiri ke kanan. Hal yang seperti ini kurang cepat jika kita ingin mencari data di dalam

linklist

Untuk itulah kita memerlukan link list yang setiap simpulnya mempunyai 2 buah pointer ,

dengan pointer pertama menunjuk ke simpul sebelumnya (sebelah kiri) dan pointer kedua

menunjuk ke simpul sesudahnya (disebelah kanan). Hal ini akan mempermudah pembacaan (bisa

dilakukan dari kiri ke kanan dan dari kanan ke kiri), begitu juga untuk penambahan simpul baru

dan penghapusan simpul. Link list seperti ini disebut dengan Seranai Beranai Ganda (Double

linkedlist). Juga disebut dengan TwoWayList

Secara garis besar Double link list adalah link list yang memiliki dua buah pointer yang

menunjuk ke simpul sebelumnya (Prev) dan yang menunjuk ke simpul sesudahnya (Next).

Gambar berikut menunjukkan gambaran Double Link list

A

NULL B C D NULL

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

Type

PSimpul =^Simpul Simpul = Record

Info : char; Prev : PSimpul; Next : PSimpul; End;

Var

Head, Tail : PSimpul;

Ada beberapa hal yang harus diketahui mengenai Double link list, diantaranya adalah :

1. Double Link list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list

yang disebut Head

2. Double Link list juga selalu memiliki pointer petunjuk menunjuk pada akhir dari list yang

(2)

3. Setiap simpul yang terbentuk selalu memiliki nilai NIL , kecuali jika simpul tersebut sudah

ditunjuk oleh simpul yang lainnya (Double Link list belum terhubung).

4. Posisi simpul terakhir pada Doube link list selalu bernilai NIL karena ia tidak menunjuk pada

simpul yang lainnya, kecuali bentuk circular.

5. Operasi yang dapat dilakukan pada DoubleLink list diantaranya adalah :

a. Inisialisasi.

b. Menambah Simpul (di Depan, Belakang dan Tengah).

c. Menghapus Simpul (di Depan, Belakang dan Tengah).

d. Membaca isi link list.

1. Membuat Simpul Baru

Untuk membuat node baru digunakan keyword new. Perintah ini digunakan untuk

mempersiapkan sebuah node dengan alokasi memorinya. Selanjutnya medan informasi pada

node tersebut diisi dengan data tertentu. Terakhir pointer prev dan next diisi dengan NILL.

New(Baru);

Baru^.Info := Elemen; Baru^.Next := Nil; Baru^.Prev := Nil;

2. Menambah Simpul di Awal

Penambahan node baru yang akan diletakkan di node paling depan, perlu diperhatikan saat

pertama kali (data masih kosong), maka saat penambahan data dilakukan head/tail ditunjukkan

ke node baru tersebut. Sedangkan jika tidak kosong, data akan ditambahkan didepan head,

(3)

B next

Procedure TDep(Var Head, Tail : PSimpul; Elemen : Char); Var Baru : PSimpul;

3. Menambah Simpul di Belakang

Penambahan node di belakang akan selalu dikaitkan dengantaildan kemudian node baru tersebut

(4)

B next

Procedure TBel(Var Head, Tail : PSimpul; Elemen : Char); Var Baru : PSimpul;

4. Menghapus Simpul di Awal

Menghapus node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka

harus dilakukan penggunakan suatu pointer lain yang digunakan untuk menunjuk node yang

akan dihapus, misalnya pointer hapus. Kemudian head harus ditunjukkan ke node sesudahnya

terlebih dahulu agar list tidak putus, sehingga node setelah head lamaakan menjadihead baru.

Setelah itu barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete.

(5)

A

NULL B C D NULL

head tail

hapus

B

NULL C D NULL

tail head

Procedure HDepan(Var Head, Tail : PSimpul); Var Hapus : PSimpul;

Begin

if head = nil then Write('List Kosong')

else if Head^.Next = Nil Then begin

Hapus := Head; Head := Nil; Tail := Nil; Dispose(Hapus) end

else Begin

Hapus := Head;

Head := Hapus^.Next; Head^.Prev := Nil; Dispose(Hapus); End

End;

5. Menghapus Simpul di Belakang

Menghapussimpul di belakang dibutuhkan satu buah pointer bantuan, misal pointerhapus, tidak

perlu melakukan perulangan untuk mencari node terakhir seperti pada single linked list. Pointer

hapus hanya perlu menunjuk pada pointer tail saja. Sebelum penghapusan node, tail harus

dipindahkan pada node sebelumnya. Selanjutnya pointernext daritail diberi nilaiNILL. Kemudian

(6)

A

NULL B C D NULL

head tail hapus

A

NULL B C

head tail

Procedure HBel(Var Head, Tail : PSimpul); Var Hapus : PSimpul;

Begin

if head = nil then Write('List Kosong')

else if Head^.Next = Nil Then begin

Hapus := Head; Head := Nil; Tail := Nil; Dispose(Hapus) end

else Begin

Hapus := Tail;

Tail := Hapus^.Prev; Tail^.Next := Nil; Dispose(Hapus); End

Gambar

Gambar berikut menunjukkan gambaran Double Link list

Referensi

Dokumen terkait

Melihat keberagaman atraksi yang dimiliki oleh Desa Wisata Pentingsari, penulis melihat bahwa atraksi-atraksi yang dimiliki menjadi daya tarik yang dapat diolah

Berdasarkan hasil uji antiseptik dengam metode replika didapatkan hasil bahwa gel ekstrak daun cabe rawit memiliki efektivitas sebagai gel antiseptik dilihat dari

Justru siraman eksudat akar dari segawe menunjukkan pengaruh positif terhadap pertumbuhan tanaman kakao yang ditunjukkan pada peningkatan jumlah daun, tinggi

* Senarai berantai ganda (doubly linked-list) atau senarai dua arah (two-way list), setiap simpulnya mempunyai 2 buah pointer, dengan pointer pertama menunjuk

Buatlah method untuk menambahkan Node di Double Linked List, setelah Node tertentu (pembacaan List menggunakan pembacaan mundur). public

Double Link list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list yang disebut Head.. Double Link list juga selalu memiliki pointer petunjuk

Link list juga selalu memiliki pointer petunjuk menunjuk pada akhir dari list yang disebut Tail, kecuali untuk jenis circular.. Setiap simpul yang terbentuk selalu memiliki nilai

 Operasi pada double linked list terdiri dari operasi cetak, sisip dan hapus  Operasi cetak dapat dilakukan dari head ke tail atau dari tail ke head  Operasi sisip terdiri dari