Kamis, 26 Desember 2013

LINKED LIST

Linked List adalah jenis struktur data yang merupakan suatu rangkaian atau daftar record sejenis yang dihubungkan dengan menggunakan bantuan pointer. Adapun pengalokasian daftar  tersebut dilakukan secara dinamis sehingga isi dari daftar tersebut dapat dimanipulasi(ditambah maupun dikurangi). Itulah sebabnya mengapa harus mengenal pointer dan pengalokasian memori terlebih dahulu.

Untuk memudahkan dalam memahami pengertian linked list, coba bayangkan apabila anda mendeklarasikan array record dengan banyak 10 elemen. Setiap kali program dijalankan, program akan memesan ruang memori sebesar 10x ukuran record. Sekarang apabila kita hanya menggunakan 5 buah elemen array maka  program akan tetap mengalokasikannya untuk sepuluh elemen. hal ini merupakan suatu pemborosan memori yang seharusnya di hindari dalam pembuatan program.

Dalam pemrograman linked list dibedakan menjadi sua jenis yaitu singlu linked list dan doubly linked list. Berikut ini penjelasan  dari masing-masing jenis tersebut.
a.Singly Linked List
Singly Linked List didefinisikan sebagai suatu rangkaian record sejenis yang dihubungkan satu buah pointer. Untuk lebih memahami, coba perhatikan contoh pendefinisian record dibawah ini.

type
  TNode = record
       data : integer;
       next : ^TNode;
end;
            Pada kode diatas kita dapat mendefinisikan tipe record dengan nama TNode dimana didalamnya terdapat dua buah field, yaitu data (bertipe integer) dan pointer next (bertipe pointerTNode). Field data akan digunakan untuk menyimpan nilai sedangkan field next berfungsi untuk menyimpan alamat dari record TNode lainnya yang terdapat dalam rangkaian.

Stack(Tumpukan)
Stack merupakan jenis singly linked list yang menerapkan konsep LIFO (Last In First Out). Artinya , pada rangkaian jenis ini record yang ditambahkan teralhir kali memudahkan pemahaman materi ini, coba bayangkan sebuah tumpukan piring yyang baru selesai dicuci. Pada tumpukkan tersebut, piring yang diletakkan pertama kali pasti akan diambil terakhir kali. Sebaiknya, piring yang diletakkan  terakhir kali, akan diambil pertama kali.       
    
Queque (Antrian)
         Queque merupakan jenis singly linked list yang menerapkan konsep FIFO( First In First Out). Untuk memahami pengertian queque, coba bayangkan sebuah antrian yang terdapat dibank, loket tiket kerea api, bioskop maupun tempat antrian lainnya. Disana, orang yang datang berikutnya akan dilayani sesuai dengan urutan antrian. Hal tersebutjuga berlaku didalam queque, data yang dimasukkan terakhir juga akan diambil terakhir kali. Ini tentu bertolak belakang dengan konsep yang terdapat didalam stack.

b. Doubly Linked List
Doubly Linked List merupakan linked list yang memiliki dua buah pointer sebagai penghubung rangkaiannya. Dua buah pointer? Ya benar dua pointer. Untuk lebih memahami, perhatika  terlebih dahulu definis tipe record dibawah ini.

type
   TNode = record;
        prev : ^TNode;
        data  : integer;
        next  :  ^TNode;
end;

Record TNode diatas memiliki dua buah pointyer sebagai fieldnya yaitu prev dan next. Pointer prev akan digunakan untik menunjuk ke alamat record sebelumnya sedangkan pointer next digunakan untuk menunjuk ke alamat record berikutnya. Hal yang perlu diperhatikan adalah pointer prev yang terdapat pada record pertama dan pointer next yang terdapat pada record terakhir, keduanya harus memiliki nilai nil.

c. Mengimplementasukan Linekd List dengan Rekursi
Rekursi juga dapat digunakan untuk menambahkan struktur baru kedalam linked list maupun menampilkan kembali struktur-struktur yang terdapat dalam rangkaian tersebut. Namun, perlu hati-hati dalam menggunakan rekursi karena apabila data yang dimasukkan terlalu banyak, maka dapat menyebabkan terjadinya stack overflow. Asumsikan bahwa kita memiliki struktur TNode dan pointer PNode yang didefinisikan seperti dibawah ini.

type
   PNode  = ^TNode;
   TNode   : record
       data  : integer;
       next   : PNode;
end;

Sumber : Teknik Pemrograman Pascal revisi ketiga, Budi Raharjo


Tidak ada komentar:

Posting Komentar