Pada minggu lalu kita mempelajari tentang link
list dimana pada link list ini hanya memiliki 1 buah pointer saja. Hal ini
menyebabkan bahwa link list hanya bisa dibaca satu arah saja. Yaitu dari kiri
ke kanan. Hal ini kurang cepat jika kita ingin mencari data pada link list.
Untuk mengatasi penggunaan link list maka kita
menggunakan double link list yaitu link list yang mempunyai 2 buah pointer.
Dimana 1 pointer menunjuk ke alamat berikutnya dan 1-nya lagi menunjukkan ke
alamat sebelumnya.
Double link list adalah link list yang memiliki dua buah pointer yang menunjuk ke
simpul sebelumnya (Prev) dan yang menunjuk ke simpul sesudahnya (Next).
Double Link list dapat digambarkan seperti
berikut ini :
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 disebut Tail.
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 (Membaca
maju dan mundur).
Circular Double Link List
Jenis link
list ini merupakan jenis double link list yang
memiliki simpul kepala dan tidak mempunyai tail
(Head = Tail). Fungsi simpul kepala
dapat digunakan untuk menyimpan informasi tambahan pada list. Berikut
ini merupakan ilustrasi dari circular
header double link list.
Beberapa
Operasai pada circular double link list :
Inisialisasi
Proses ini dilakukan untuk mendefinisikan Circular double link list untuk
pertama kalinya atau dengan kata lain ingin membuat Head. Pada proses ini kita
menginginkan agar pointer kiri (Prev) dan kanan (Next) dari simpul kepala tidak bernilai NIL, sehingga simpul kepala
pada saat inisialisasi bisa kita gambarkan sebagai berikut :
Menambah Simpul
Menambah simpul pada double
link list ada tiga macam yaitu menambah di depan,
belakang dan tengah, tapi hanya penambahan yang umum dipakai saja oleh double link list yang
akan dibahas yaitu penambahan simpul di belakang. Penambahan di belakang
maksudnya menambahkan simpul-simpul baru pada posisi Tail
Menghapus Simpul
Operasi menghapus simpul juga ada tiga macam yaitu menghapus
simpul di depan, belakang dan tengah. Tapi dengan menggunakan double link list proses
pencarian simpul yang akan dihapus menjadi semakin cepat. Untuk menghapus
sebuah simpul diperlukan satu buah tambahan variabel pointer yaitu variabel
bantu yang berguna untuk menunjukkan simpul manakah yang akan dihapus
Membaca Isi dari simpul
Dengan menggunakan double
link list proses pembacaan simpul dapat dilakukan
dua arah tanpa harus dilakukan prosedur membalik simpul. Kita hanya menggunakan
satu prosedur bantu yang pointer next-nya kita gunakan jika kita ingin membaca
mundur atau pointer prev-nya jika kita ingin melakukan pembacaan secara maju.
No comments:
Post a Comment