Tuesday, July 3, 2012

Double Link List


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