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
Operasioperasi 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.
 
Operasioperasi 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
 
                                            
                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
Operasioperasi 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.
Operasioperasi 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