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 😀