Pertemuan 6
Waktu : menit
Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman
menggunakan Double Linked List.
Substansi Materi : Doubled Linked List, Circullar Double Linked List Tabulasi Kegiatan Perkuliahan
No Kegiatan Tahap Kegiatan Pengajar Mahasiswa Kegiatan Media & Alat Waktu
Pendahuluan . Membuka pertemuan
. Mengulang materi pertemuan sebelumnya
Menyimak
Bertanya Papan Tulis Menit
Penyajian
Materi .. Teori Double Linked ListOperasi‐operasi pada Double Linked List
. Teori Circullar Double Linked List . Operasi‐operasi pada Circullar Double
Linked List
Menyimak Bertanya Menjawab Pertanyaan
Papan Tulis 8 Menit
Penutup . Menyimpulkan materi pertemuan . Memberikan tugas kecil
. Menutup pertemuan
Menyimak Papan tulis Menit
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.
Aku
Belajar
Pointer
………
………
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.
nil nil
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;
¾ )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;
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
)f Now <> Nil then
Dispose now ;
¾ 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 ;
¾ 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 ;
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;
¾ 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;
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;
¾ 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;
¾ 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 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 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 x,y : elemen_Type ; Begin