Minggu, 19 September 2010

Linked List

Linked List adalah suatu struktur data yang terdiri dari node/elemen sejenis yang saling berhubungan satu sama lain, secara berurutan, dimana tiap node berisi 2 jenis atribut, yaitu data dan alamat untuk menunjuk node selanjutnya.




Perbedaan antara struktur data Array dan Linked List
Array
  • Jumlah elemen sudah ditentukan saat elemen dibuat sebelum tiap-tiap elemen diisi.
  • Keuntungannya adalah kecepatan akses array sangat cepat karena dapat mengakses elemen tertentu dengan menyebutkan index-nya langsung. Selain itu pemrogramannya sangat mudah.
  • Kerugiannya adalah pemborosan ruang memory seandainya hanya sedikit elemen yang diisi/terpakai,selain itu bila ingin elemen telah penuh, maka array tidak bisa menambah elemen baru. Kita harus membuat array baru atau mendefinisikan ulang ukuran array dengan konsekuensi, elemen-elemen yang sudah terisi akan terhapus seluruhnya.
 Linked List
  • Jumlah elemen tidak usah ditentukan. Saat dibuat pertama kali, suatu linked list bahkan bisa tidak mempunyai node/elemen sama sekali.
  • Keuntungannya adalah tidak terjadi pemborosan memory, karena jumlah data sesuai dengan jumlah node/elemen yang dibuat dan jumlah node/elemen fleksibel sesuai dengan kebutuhan programmer.
  • Kerugian adalah kecepatan akses yang lambat karena untuk mendapatkan data pada posisi tertentu, programmer harus melakukan proses traverse dari posisi pointer awal dan berjalan dari node ke node lain sampai menuju ke node yang diinginkan. Selain itu, pemrogramannya sangat komplek.

Dukungan Bahasa Pemrograman

Struktur data Linked List hanya didukung oleh bahasa pemrograman C, C++. Bahasa Pascal/Delphi juga mendukung, namun jarang sekali dosen mengajarkannya. Hal itu karena ketiganya sama-sama mendukung tipe data pointer. Sedangkan dalam bahasa pemrograman Java, konsep array dinamis (mirip linked list) diperkenalkan. Array dinamis adalah suatu array yang ukurannya fleksible, yang dapat mengecil dan membesar untuk menyesuaikan jumlah eleman/data. Dalam java, array dinamis menggunakan class Vector dan ArrayList. Array dinamis merupakan pengembangan dan simplifikasi dari sebuah pointer karena pemrograman dengan melibatkan variable pointer sangat membingungkan bagi mereka yang belum terbiasa.

Menurut penulis sendiri, latihan pemrograman dalam pemahaman Linked List yang paling sesuai menggunakan bahasa C atau C++ karena bahasa tersebut memang memiliki keunikan dan keunggulan dalam memanipulasi data  secara cepat melalui akses alamat memory langsung, namun begitu, jika tidak disertai metode yang baik dan benar, dapat mengakibatkan sistem operasi hang/crash atau blue screen.

Sebelum membahas operasi yang ada pada Linked List, mahasiswa harus membaca terlebih dahulu konsep pointer.

Macam Linked List.

1. Single Linked List adalah linked list yang tiap node-nya hanya menunjuk ke node berikutnya. (gambar paling atas). Linked List jenis ini hanya bisa bergerak/traverse ke node di depannya (forward only).



2. Double Linked List adalah linked list yang tiap node-nya menunjuk ke 2 node, yaitu node sebelumnya dan node berikutnya. Linked List jenis ini bisa bergerak/traverse ke (forward and backward).


3. Double Linked List berpointer ganda (head/kepala dan tail/ekor) sama dengan Double Linked List namun memiliki dua pointer yang menunjuk node awal (head) dan node akhir (tail).

 

4. Circular Linked List adalah sebuah single linked list di mana node terakhir, akan terhubung ke node awal (node yang ditunjuk pointer head). Bila tidak ada data sama sekali, maka pointer head akan menunjuk ke NULL dan bila hanya ada satu node, maka atribut next akan menunjuk ke node itu sendiri.

2 komentar:

  1. thanks ya
    aku copy sebagian filenya sebagai referensi gitu

    BalasHapus
  2. Best Casinos in Norwich, CT (December 2021)
    There's no shortage of casino resorts in Norwich and we bet365 can 태백 출장안마 tell 속초 출장샵 you that 경상남도 출장안마 we found a number of 경상북도 출장마사지 them, but there are a few that have been

    BalasHapus