Linked List dan Implementasinya dalam Bahasa Java tutorialpemrograman.wordpress.com - 2009 1
Single 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. Double 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. tutorialpemrograman.wordpress.com - 2009 2
Single 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. Double Circular Linked List : ~ Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular. tutorialpemrograman.wordpress.com - 2009 3
Implementasi Class Single Linked List beserta Methodnya : class Node{ int data; Node next; class LinkedList{ Node head; //posisi awal dari linked list Node tail; //posisi akhir dari linked list /** * Fungsi untuk mengecek apakah linked list masih kosong */ boolean isempty(){ return (head==null); void addfirst(node input){ if (isempty()){ head = input; tail = input; //Jika linked list masih kosong, //maka head dan tail sama dengan node input input.next = head; //Jika linked list sudah berisi, head = input; //maka input akan di depan dan menjadi head void addlast(node input){ if (isempty()){ //Jika linked list masih kosong, head = input; //maka head dan tail sama dengan node input tail = input; tail.next = input; //Jika linked list sudah berisi, tail = input; //maka input akan di belakang dan menjadi tail void insertafter(int key,node input){ do { if (temp.data == key){ //Jika data sama dengan key, maka input input.next = temp.next; //disambung diantara temp dan temp.next temp.next = input; System.out.println("Insert data is succeed."); //dari temp --> temp.next menjadi : //temp --> input --> temp.next while (temp!=null); void insertbefore(int key,node input){ tutorialpemrograman.wordpress.com - 2009 4
if ((temp.data == key)&&(temp == head)){ this.addfirst(input); /* jika insert pada awal linked list maka call method addfirst */ System.out.println("Insert data is succeed."); else if (temp.next.data == key){ input.next = temp.next; //dari temp --> temp.next menjadi temp.next = input; System.out.println("Insert data is succeed."); //temp --> input --> temp.next void removefirst(){ if (!isempty()){ if (head == tail){ //jika element linked list hanya 1, head = tail = null; //maka head dan tail menjadi null //sehingga linked list kosong //memajukan temp ke temp.next head = temp; //kemudian head dipindah ke temp temp = null; //kemudian temp di-null (optional) else System.out.println("Data is empty!"); void removelast(){ if (!isempty()){ if (tail == head){ //jika element linked list hanya 1 head = tail = null; //maka head dan tail menjadi null //sehingga linked list kosong while (temp.next!= tail){ //memajukan temp hingga satu elemen //sebelum tail. temp.next = null; //temp.next di-null,dan jadi akhir LL tail = temp; temp = null; //tail dipindah ke temp else System.out.println("Data is empty!"); void remove(int key){ if (!isempty()){ if (temp.next.data == key){ //mengganti temp.next dengan temp.next = temp.next.next; //temp.next.next //dari temp --> temp.next -->temp.next.next //menjadi temp --> temp.next.next tutorialpemrograman.wordpress.com - 2009 5
else if ((temp.data == key)&&(temp == head)){ this.removefirst();//jika key berada pada awal linked list, //maka call method removefirst else System.out.println("Data is empty!"); void find (int key){ int i = 0; boolean found = false; if (temp.data == key){ found = true; i++; if (found){ System.out.println(key+" is found at index "+i); else System.out.println("Data isn't found"); void printnode(){ Node temp; temp = head; System.out.println(temp.data); tutorialpemrograman.wordpress.com - 2009 6