Jumat, 24 Mei 2013

Linked List Java

Pengertian Linked list :
  • sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian
  • struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.
Link list adalah desain tempat penyimpanan data yang terdiri dari node-node (simpul-simpul) yang saling terhubung.

Link list dapat diilustrasikan seperti kereta api, dimana kereta api terdiri dari gerbong-gerbong yang saling terhubung yang dapat mengangkut penumpang. Gerbong disini setara dengan node dalam link list yang berfungsi untuk menyimpan data.


Jika kita menyimpan data 3, 5 dan 7 dalam array, maka ilustrasi tempat penyimpanannya sbb:

Dengan 1 nama, array bisa menyimpan data yg bertipe sama. Dimana setiap data mempunyai indeks.

Sedangkan jika data tersebut disimpan dalam link list, maka ilustrasi tempat penyimpanannya sbb:


Singly Linked List :
~ Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya dan juga memiliki field yang berisi data.
~ Akhir linked list ditandai dengan node terakhir akan menunjuk ke null yang akan digunakan sebagai kondisi berhenti saat pembacaan linked list.

Single Linked List Non Circular
Singly Linked List Non Circular

Doubly Linked List :
~ Linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu: 1 field pointer yang menunjuk ke pointer berikutnya, 1 field pointer yang menunjuk ke pointer sebelumnya dan field yang berisi data dari node tersebut.
~ Pointer next dan prev-nya menunjuk ke null.

Doubly Linked List
Doubly Linked List
 

Singly Circular Linked List :
~ Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk ke pointer terdepannya.

Singly Circular Linked List
Singly Circular Linked List



Double Circular Linked List :
~ Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.
Doubly Circular Linked List
Doubly Circular Linked List


Link list tidak mempunyai indeks seperti array. Kita hanya bisa memberi nama node. Akan tetapi, tidak semua node dalam link list mempunyai nama. Sebaiknya kita memberi nama untuk node yang pertama (misal namanya head), dan node yang terakhir (misal namanya tail). Tujuannya untuk memudahkan operasi link list dari depan atau belakang, misal nambah data atau menghapus data. 

Langkah yang pertama, kita harus mendefinisikan apa itu node. Dalam Java, sebaiknya pendefinisian node ini dibuat dalam sebuah class, misal:






 




Kemudian kita buat design link list dalam class yang lain, misal:










* untuk contoh program lengkap ada dalam file. download disini.

Operasi-operasi yang bisa dilakukan dalam link list yaitu:
  1. Tambah data (insert)
  2. Edit data (edit)
  3. Hapus data (delete)
  4. Pengurutan data (sorting)
  5. Pencarian data (searching)
Tambah Depan
Untuk tambah data dari depan, caranya:














Tambah Belakang
Untuk tambah data dari belakang, caranya:














Hapus Depan
Untuk menghapus data dari depan, caranya:














Hapus Belakang
Untuk menghapus data dari belakang, caranya:




















Referensi:
http://dianuraiman.blogspot.com/2011/11/link-list-dalam-java.html 
http://tutorialpemrograman.wordpress.com/2009/02/14/linked-list-dalam-bahasa-java/
http://desiasfi.wordpress.com/2012/04/14/stack-dan-queue-dengan-linked-list-pada-java/

10 komentar:

  1. Salam kenal teh fenny,
    Sangat bermanfaat tulisannya, tetapi link untuk download contoh program lengkap tidak bisa dibuka,
    segera diperbaiki ya teh.
    Terima kasih

    BalasHapus
    Balasan
    1. Okesippp samasama...
      ok.. makasih jg masukannya

      Hapus
    2. butuh perbaikannya teh fenny

      Hapus
  2. mbak fenny izin copas yah
    selffi binadarma 2013 :) tugas struktur data nih hehe

    BalasHapus
  3. sangat bermanfaat sekali untuk tugas kuliah :D

    BalasHapus
  4. programnya bisa dikirim diemail saya?? timkreatifblog@gmail.com

    BalasHapus
  5. programnya 404 min...
    update dong ? ato via email sy boleh

    BalasHapus
  6. kalau method mencari menggunakan dua parameter gimana min..??

    BalasHapus