Iseng posting tentang linkedlist java, mumpung sedang belajar itu juga di Algoritma dan Struktur Data. Itung itung menuhin blog juga ^_^
langsung aja, berikut listing programnya :
yg ini untuk file Node.java
public class Node { int data; Node next; Node prev; Node(int id){ data=id; } }
file AddtLinkedList.java
public class AddtLinkedList { static boolean kosongCek(Node head){ return (head==null); } static void tukar(Node nd1, Node nd2){ Node tmp = new Node(nd1.data); nd1.data=nd2.data; nd2.data=tmp.data; } static void tampil(Node head){ Node current=head; while(current!=null){ System.out.print(current.data+" "); current=current.next; } System.out.println(); } static void tampil(Node head, Node tail, String a){ if (a=="maju"){ Node current=head; while(current!=null){ System.out.print(current.data+" "); current=current.next; } System.out.println(); } else if (a=="mundur"){ Node current=tail; while(current!=null){ System.out.print(current.data+" "); current=current.prev; } System.out.println(); } } }
file OrderedList.java
public class OrderedList { int jumlah; Node head, tail, current; OrderedList(){ head=tail=current=null; jumlah=0; } void tambahAwal(int data){ Node nd = new Node(data); if (AddtLinkedList.kosongCek(head)){ head=tail=nd; } else { nd.next=head; head=nd; } jumlah++; } void tambahAkhir(int data){ Node nd = new Node(data); if(AddtLinkedList.kosongCek(head)){ head=tail=nd; } else { tail.next=nd; tail=nd; } jumlah++; } void tambahTengah(int data, int posisi){ Node nd = new Node(data); if(AddtLinkedList.kosongCek(head)){ head=tail=nd; } else if (posisi>jumlah){ System.out.println("Posisi melebihi jumlah node, maka data di letakkan paling akhir!"); tambahAkhir(data); } else { current=head; int i=1; while(i<(posisi-1)){ current=current.next; i++; } nd.next=current.next; current.next=nd; } jumlah++; } void hapusTengah(int posisi){ if(AddtLinkedList.kosongCek(head)){ System.out.println("List masih kosong!"); } else if (posisi>jumlah){ System.out.println("Di luar jangkauan!"); } else { current=head; int i=1; while(i<(posisi-1)){ current=current.next; i++; } current.next=current.next.next; } jumlah--; } Node getHead(){ return head; } Node getTail(){ return tail; } int getJumlah(){ return jumlah; } }
file DoubleOrderedList.java
public class DoubleOrderedList { int jumlah; Node head, tail, current; DoubleOrderedList(){ head=tail=current=null; jumlah=0; } void tambahAwal(int data){ Node nd = new Node(data); if (AddtLinkedList.kosongCek(head)){ head=tail=nd; } else { nd.next=head; head.prev=nd; head=nd; } jumlah++; } void tambahAkhir(int data){ Node nd = new Node(data); if(AddtLinkedList.kosongCek(head)){ head=tail=nd; } else { tail.next=nd; nd.prev=tail; tail=nd; } jumlah++; } void tambahTengah(int data, int posisi){ Node nd = new Node(data); if(AddtLinkedList.kosongCek(head)){ head=tail=nd; } else if (posisi>jumlah){ System.out.println("Posisi melebihi jumlah node, maka data di letakkan paling akhir!"); tambahAkhir(data); } else { current=head; int i=1; while(i<(posisi-1)){ current=current.next; i++; } nd.next=current.next; nd.prev=current; current.next.prev=nd; current.next=nd; } jumlah++; } void hapusTengah(int posisi){ if(AddtLinkedList.kosongCek(head)){ System.out.println("List masih kosong!"); } else if (posisi>jumlah){ System.out.println("Di luar jangkauan!"); } else { current=head; int i=1; while(i<(posisi-1)){ current=current.next; i++; } current.next=current.next.next; current.next.prev=current; } jumlah--; } Node getHead(){ return head; } Node getTail(){ return tail; } int getJumlah(){ return jumlah; } }
file Main.java
public class Main { public static void main (String args[]) { OrderedList ol = new OrderedList(); System.out.println("list awal..."); ol.tambahAwal(3); ol.tambahAkhir(5); ol.tambahAkhir(7); ol.tambahAkhir(9); ol.tambahAkhir(0); AddtLinkedList.tampil(ol.getHead()); System.out.println("disisipkan 4 pada posisi ke-2..."); ol.tambahTengah(4, 2); AddtLinkedList.tampil(ol.getHead()); DoubleOrderedList dol = new DoubleOrderedList(); System.out.println("list awal..."); dol.tambahAwal(3); dol.tambahAkhir(5); dol.tambahAkhir(7); dol.tambahAkhir(9); dol.tambahAkhir(0); AddtLinkedList.tampil(dol.getHead(), dol.getTail(), "maju"); System.out.println("disisipkan 4 pada posisi ke-2..."); dol.tambahTengah(4, 2); AddtLinkedList.tampil(dol.getHead(), dol.getTail(), "maju"); } }
untuk method method yang lain tinggal di masukkan sendiri 😀