pertemuan 6 doubledc2a0linkedc2a0list c2a0circullarc2a0doublec2a0linkedc2a0listc2a0

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

Pertemuan 6 
 
Waktu  

 

 

 

 

 




 menit 

Tujuan Pembelajaran 

: Mahasiswa mampu menjelaskan teknik pemrograman  

Substansi Materi 

: Doubled Linked List, Circullar Double Linked List 

 

 

  menggunakan Double Linked List. 

Tabulasi Kegiatan Perkuliahan 
 


No 

Tahap 
Kegiatan 

 

Pendahuluan 

 

Penyajian 
Materi 

 

 

Penutup 


Kegiatan Pengajar 
.
.

.
.

.
.

.
.
.

Membuka pertemuan
Mengulang materi pertemuan 
sebelumnya 
Teori Double Linked List
Operasi‐operasi pada Double Linked 

List 
Teori Circullar Double Linked List 
Operasi‐operasi pada Circullar Double 
Linked List 
Menyimpulkan materi pertemuan
Memberikan tugas kecil 
Menutup pertemuan 

Kegiatan 
Mahasiswa 
Menyimak
Bertanya 

Media & 
Alat 

Waktu 

Papan Tulis 


 Menit

Menyimak
Bertanya 
Menjawab 
Pertanyaan 

Papan Tulis 

8  Menit

Menyimak

Papan tulis 

 Menit

M A T E R I    K U L I A H
Double Linked List 


Salah  satu  kelemahan  dari  single  linked  list  adalah  pointer  penunjuk   hanya  dapat 
bergerak satu arah saja, maju atau mundur, kanan atau kiri. Sehingga pencarian data pada 

single  linked  list  hanya  dapat  bergerak  dalam  satu  arah  saja.  Untuk  mengatasinya  maka 
digunakan metode double linked list. Linked list seperti ini dikenal dengan nama linked list 

berpointer ganda atau Double Linked List. 
 
 
 

V3/2009‐2010  1 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 


 

nil 

 
 
 
……… 
……… 

 
 

Aku 
Belajar 
Pointer 

nil 

 


Gambar  . )lustrasi Double Linked List 

Operasi­operasi pada Double Linked List 

 

Insert
¾ )nsert After

Procedure  insert  berguna  untuk  menambah  simpul  dibelakang  sebelah 

kanan   pada  sebuah  double  linked  list.  Berikut  penggalan  procedure  insert 
after. 
 

Procedure )nsertAfter e:Elemen_Type ; 
Var Now : Point; 
    Begin 
     

New now ; 
 
Now^.)si := e; 
 
)f (ead=Nil then 
 
    Begin 
 
 
(ead := Now; 
 
 
Tail := Now; 
 
 
Now^.Next := Nil; 
 
 
Now^.Prev := Nil; 
 

    End 
 
Else 
 
    Begin 
 
 
Tail^.next := now; 
 
 
Now^.Prev := Tail; 
 
 
Tail := Now; 
 
 
Tail^.Next := Nil; 
 
    End; 
    End; 

 

V3/2009‐2010  2 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 
¾ )nsert Before

Sesuai dengan namanya, procedure )nsert Before berguna untuk menambah 

simpul  di  depan  sebelah  kiri .  Procedure  ini  tidak  berbeda  jauh  dengan 
procedure )nsert After. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Procedure )nsertBefore e:Elemen_Type ; 
Var Now : Point; 
    Begin 
     
New now ; 
 
Now^.)si := e; 
 
)f (ead=Nil then 
 
    Begin 
 
 
(ead := Now; 
 
 
Now^.Next := Nil; 
 
 
Now^.Prev := Nil; 
 
    End 
 
Else 
 
    Begin 
 
 
(ead^.prev := now; 
 
 
Now^.next := head; 
 
 
(ead := Now; 
 
 
(ead^.Prev := Nil; 
 
    End; 
    End; 

V3/2009‐2010  3 
 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

Delete
¾ Delete After

Procedure  Delete  After  berguna  untuk  menghapus  simpul  dari  belakang. 
Procedure  ini  merupakan  kebalikan  dari  procedure    )nsert  After  yang 
menambahkan simpul dibelakang. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Procedure DeleteAfter; 
Var Now : Point; 
    Begin 
     
Now := Tail; 
 
)f Now  (ead then 
 
    Begin 
 
 
Tail := Now^.Prev; 
 
 
Tail^.Next := Nil; 
 
    End 
 
Else 
 
    Begin 
 
 
Tail := Nil; 
 
 
(ead := Nil; 
 
    End; 
 
)f Now  Nil then 
 
    Dispose now ; 
    End; 

 
 
 
 
 
 
 
 
 
 
 

V3/2009‐2010  4 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 
¾ Delete Before

Procedure  Delete  Before  merupakan  kebalikan  dari  procedure  Delete  After 
yang akan menghapus simpul dari depan  sebelah kiri . 
Procedure DeleteBefore; 
Var Now : Point; 
    Begin 
     
Now := (ead; 
 
)f Now  (ead then 
 
    Begin 
 
 
(ead := Now^.Next; 
 
 
(ead^.Prev := Nil; 
 
    End 
 
Else 
 
    Begin 
 
 
Tail := Nil; 
 
 
(ead := Nil; 
 
    End; 
 
)f Now  Nil then 
 
    Dispose now ; 
    End; 

V3/2009‐2010  5 
 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 
¾ Delete at Position

Procedure  at  Position,  sesuai  dengan  namanya,  berguna  untuk  menghapus 

simpul  pada  posisi  yang  diinginkan.  Untuk  melakukannya  diperlukan 
bantuan    variabel  pointer  yang  pada  modul  ini  diberi  nama  Bantu   dan 
Bantu . Nama tersebut boleh diganti. 

Procedure DeleteAtPos; 
Var Bantu , Bantu  : Point; 
    Begin 
 
Bantu  := Now^.Prev; 
 
Bantu  := Now^.Next; 
     
 
 
)f Bantu   Nil then 
 
    Bantu ^.Next := Bantu ; 
 
Else 
 
    (ead := Bantu ; 
)f Bantu   Nil Then 
  
    Bantu ^.Prev := Bantu ; 
 
Else 
 
    Tail := Bantu ; 
 
)f Now  Nil Then  
 
    Dispose Now ; 
    End; 

 
 
 
 
 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 
V3/2009‐2010  6 
 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

Circullar Double Linked List 
Merupakan  double  linked  list  yang  simpul  terakhirnya  menunjuk  ke  simpul  awal  dan 
simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran. 
 

Operasi­operasi pada Circullar Double Linked List 
Insert 
¾ Insert After 
Procedure  )nsert  After  berguna  untuk  menambah  simpul  di  belakang 
 
 
 
 
 
 
 
 
 
 
 
 
 

sebelah kanan  pada sebuah double linked list. 
Procedure )nsertAfter e:Elemen_Type ; 
Var Now : Point; 
    Begin 
     
New now ; 
 
)f (ead=Nil then 
 
    Begin 
 
 
(ead := Now; 
 
 
else 
 
 
Now^.Prev := Tail; 
 
 
Tail^.Next := Now; 
 
    End; 
 
 
Now^.)si := e; 
 
 
Tail := Now; 
Tail^.next := (ead; 
 
 
(ead^.Prev := Tail; 
End; 

 
 
 
 
 
 
 

V3/2009‐2010  7 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

¾ Insert Before 
Procedure  )nsert  Before  berguna  untuk  menambahkan  simpul  di  depan 
sebelah  kiri .  Procedure  ini  tidak  berbeda  jauh  dengan  procedure  )nsert 

 
 
 
 
 
 
 
 
 

After yang telah dijelaskan sebelumnya. 

Procedure )nsertBefore e:Elemen_Type ; 
    Begin 
     
)f (ead=Nil then 
 
    Begin 
 
 
(ead := Now; 
 
 
Tail := Now; 
End else 
Begin 
 
 
Now^.Prev :=(ead; 
 
 
(ead^.Next := Now; 
 
    End; 
 
 
Now^.)si := e; 
 
 
Now^.Next := Tail; 
 
 
Tail^.Prev := Now; 
 
 
Tail := Now; 
End; 

 
 
 
 
 
 
 
 

V3/2009‐2010  8 
 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

Delete 
¾ Delete After 
Procedure  Delete  After  berguna  untuk  menghapus  simpul  dari  belakang. 

Procedure  ini  merupakan  kebalikan  dari  Procedure  )nsert  After  yang 
menambah simpul di belakang. 
 
 
 
 
 
 
 
 
 
 
 
 
 

Procedure DeleteAfter; 
Var Now : Point; 
    Begin 
     
Now := Tail; 
 
)f (ead=Nil then 
 
    Begin 
 
 
Tail := Nil; 
 
 
(ead := Nil; 
 
 
End else 
 
 
Begin 
 
 
Tail := Now^.Prev; 
 
 
Tail^.Next := (ead; 
 
 
(ead^.Prev := Tail; 
 
    End; 
    )f Now  nil then Dispose Now ; 
End; 

 
 
 
 
 
 
 
 
 
 
 
 
 

V3/2009‐2010  9 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

¾ Delete Before 
Procedure  Delete  Before  merupakan  kebalikan  dari  procedure  Delete  After 

yang  akan  menghapus  simpul  dari  belakang,  sedangkan  Delete  Before  akan 
menghapus simpul dari depan  sebelah kiri . 
 
 
 
 
 
 
 
 
 
 
 
 
 

Procedure DeleteBefore; 
Var Now : Point; 
    Begin 
     
Now := Tail; 
 
)f (ead=Tail then 
 
    Begin 
 
 
Tail := Nil; 
 
 
(ead := Nil; 
 
     End else 
 
     Begin 
 
 
(ead := Now^.Next; 
 
 
(ead^.Prev := Tail; 
 
 
Tail^.Next := (ead; 
 
    End; 
    )f Now  nil then Dispose Now ; 
End; 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

V3/2009‐2010  10 

DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II

DOUBLE LINKED LIST 

 

¾ Delete at Position 
Procedure  Delete  at  Position  berguna  untuk  menghapus  simpul  pada  posisi 
yang  diinginkan.  Untuk  itu  diberikan  bantuan    buah  variabel  pointer  yang 
diberi nama Bantu  dan Bantu . 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Update 

Procedure DeleteAtPos; 
Var Bantu , Bantu  : Point; 
    Begin 
 
Bantu  := Now^.Next; 
 
Bantu  := Now^.Prev; 
     
 
 
)f Bantu   Now  then 
 
Begin 
 
    Bantu ^.Next := Bantu ; 
 
    Bantu ^.Prev := Bantu ; 
 
    )f Bantu  = Tail then (ead := Bantu ; 
 
    )f Bantu  = (ead then Tail := Bantu ; 
 
End else 
 
Begin 
 
    (ead := Nil; 
 
    Tail := Nil; 
 
    End; 
 
)f Now  Nil then 
 
    Dispose Now ; 
    End; 

Procedure update berguna untuk mengganti isi suatu simpul dengan data yang lain. 
Procedure  update  ini  memanfaatkan  suatu  procedure  cari  untuk  mencari  posisi 

simpul yang akan diganti isinya tersebut. Setelah ketemu, barulah diganti isinya. 
 

Procedure Update x,y : elemen_Type ; 
Begin 
    Cari x ; 
    Now^.isi := y; 
End; 
V3/2009‐2010  11