Wednesday, January 6, 2016

Membuat Single Linked List dengan Java

Posted by on Wednesday, January 6, 2016
Di dalam struktur data ada istilah yang dikenal dengan Linked List. Linked list merupakan suatu kumpulan data yang tersusun secara sekuensial, saling tersambung dan dinamis. Suatu linked list berisi simpul (node) yang dikaitkan dengan simpul lainnya dalam urutan tertentu. 

Linked list adalah sejumlah node yang dihubungkan secara linier dengan bantuan pointer. Ada beberapa bentuk dari linked list yaitu single linked list, double linked list dan circular linked list.

Pada postingan ini saya fokuskan untuk membahas single linked list. Single linked list merupakan bentuk dari linked list yang paling sederhana, dimana simpul-simpul terhubung oleh suatu pointer. Struktur ini dapat dilintasi dari simpul pertama sampai simpul terakhir. Simpul yang dibuat pertama akan menjadi head dan simpul-simpul yang dibuat setelahnya akan menjadi simpul-simpul pengikut. Berikut gambaran dari single linked list : 


Sudah paham kan? Nah, selanjutnya adalah membuat linked list dalam bahasa java. Berikut saya bagikan source codenya. Saya sarankan mengetik ulang source code di bawah ini daripada mencopas, supaya agan lebih paham.

Pertama buat kelas dengan nama Node.
/**
*
* @author Wim Sonevel
*/
public class Node {

int data;
Node next;

public Node(int data){
this.data = data;
}

public void tampil(){
System.out.print("{"+data+"}");
}
}

Selanjutnya buat kelas dengan nama Linked List. Kelas ini berisi method-method yang akan digunakan untuk mengoperasikan Linked List.
/**
*
* @author Wim Sonevel
*/
public class LinkedList {

Node first ;

public LinkedList(){
first = null;
}

public boolean isEmpty(){
return (first==null);
}

public void addFirst(int data){
Node node = new Node(data);
node.next = first;
first = node;
}

// Menambah data dari simpul terakhir
public void addLast(int data){
Node node, help;
node = new Node(data);
node.next = null;

if(isEmpty()){
first = node;
first.next = null;
}else{
help = first;
while(help.next!=null){
help=help.next;
}
help.next=node;
}
}

// menghapus data dari simpul pertama
public Node deleteFirst(){
if(!isEmpty()){
Node temp = first;
first = first.next;
return temp;
}else{
return null;
}
}

// menghapus data dari simpul terakhir
public Node deleteLast(){
if(!isEmpty()){
Node temp, current;
current=first;
while(current.next.next != null){
current=current.next;
}
temp=current.next;
current.next=null;
return temp;
}else{
Node temp = first;
first = null;
return temp;
}
}

// menampilkan isi linked list
public void tampilkan(){
Node current = first;
if(current == null){
System.out.println("Kosong!");
}else{
while(current != null){
current.tampil();
current = current.next;
}
System.out.println();
}
}
}

Setelah itu buat kelas dengan nama LinkedListApp. Kelas ini berfungsi untuk memanggil objek kelas LinkedList.
/**
*
* @author Wim Sonevel
*/
public class LinkedListApp {
public static void main(String[] args) {

LinkedList link = new LinkedList();
link.addFirst(1);
link.addFirst(2);
link.addLast(3);
link.addLast(4);
link.tampilkan();
link.deleteLast();
link.tampilkan();

}
}

Output :










Sekian dari saya, semoga bermanfaat.
Happy coding :)
close