‘ RinariN ‘

April 15, 2008

program simulasi linked list

Diarsipkan di bawah: Java programming — by rinarin @ 7:39 am

class Node{
int ip;
Node next;                         // u/ nglink
public Node(int data){        // constructor class Node
ip = data;
}
}
class LinkedList{
Node head;                        // node yg paling depan
Node tail;                         // node yg paling blakang
public LinkedList () {
}

void addFirst(Node input){      // add Node di depan
if(head == null){            // kalo linkedlist masi kosong
head = input;            // input diposisikan sbg head sekaligus tail
tail = input;
}
else{                        // kalo linkedlist udah ada isi
input.next = head;
head = input;             // posisi head ada pada input, tail tetap cz nambah di depan
}
}

void addLast(Node input){          // add Node di belakang
if(head == null){            // kalo linkedlist masi kosong
head = input;            // input diposisikan sbg head sekaligus tail
tail = input;
}
else{                        // kalo linkedlist udah ada isi
tail.next = input;
tail = input;            // posisi tail digeser ke input, head tetap cz nambah di belakang
}
}

void find(int key){                    // method buat nyari node ,,  key = nod yang dicari
Node pointer = head;            // bikin node pointer di head
System.out.println(“Proses pencarian angka “+key);
while(pointer!=null){            // nge-loop terus sampe ketemu null
if(pointer.ip == key){        // kalo pointer = key, print Ketemu!!
System.out.println(“Ketemu!!”);
break;
}
else                        // kalo ga sama, pointer digeser ke next-nya
pointer = pointer.next;
}
if(pointer == null)                // kalo pointer uda sampe null, tapi blon ketemu key, print ga Ketemu!!
System.out.println(“ga Ketemu!!”);

}
public Node Find (int data) {        // Node Find, konsepnya sama kayak void find, bedanya Node Find bisa me-return cz bukan void
Node search = head;                    // bikin node search di head, konsep search sama kayak konsep pointer di void find
while (search!=null) {                // nge-loop terus sampe ketemu null
if(search.ip == data)             // kalo search = key, return search
return search;
search = search.next;
}
return null;                        // kalo pointer uda sampe null, tapi blon ketemu key, return null
}

void cetakSemuaNode(){                    // nge-cetak semua node pd linkedlist
Node temp;                            // bikin node temp di head
temp = head;
while (temp!=null){                    // nge-loop terus sampe ketemu null
System.out.print(” “+ temp.ip);    // nge-cetak node satu per satu
temp = temp.next;
}
}

void removeFirst(){                // remove node terdepan
if(head!=null){
if(head==tail){
head = null;
tail = null;
}
else{
head = head.next;        // posisi head digeser ke next-nya, shg otomatis head awalnya ilang
}
}
}

void removeLast(){            // remove node paling blakang
if(head!=null){
if(head==tail){
head = null;
tail = null;
}
else{
Node temp = head;            // bikin node temp di head
while(temp.next!=tail){        // nge-loop terus sampe ketemu tail
temp = temp.next;        // pointer digeser ke next-nya
}
tail=temp;
temp.next=null;
}
}
}

void remove(int data){                // remove sesuai data yg ingin diremove
Node pointer = Find(data);        // menepatkan pointer pada posisi data yg ingin diremove
if(pointer==null)return;
else if(pointer==head) removeFirst();    // kalo ternyata pointer ada di head, langsung removeFirst aja
else if(pointer==tail) removeLast();    // kalo ternyata pointer ada di tail, langsung removeLast aja
else{                                    // tapi kalo tenyata pointer bukan di head / tail…
Node beforeData = head;                // bikin pointer beforeData di head
while(beforeData.next!=pointer){    // nge-loop terus sampe ketemu pointer
beforeData = beforeData.next;
}
Node afterData = pointer.next;        // bikin node after data setelah pointer, shg posisi : beforeData-pointer-afterData
beforeData.next = afterData;        // beforeData langsung dihubungkan ke afterData, shg : beforeData-afterData
}                                        // dg kata lain pointer dilepas dari link
}

void insertAfter(int key, int data){        // insert [data] after [key]
Node pointer = Find(key);                // menepatkan pointer sesuai posisi key
if(pointer == null) return;
else{
Node temp = pointer.next;            // bikin node temp di blakang pointer, posisi: pointer-temp
Node baru = new Node(data);            // bikin node baru
pointer.next = baru;                // posisi : pointer-baru
baru.next = temp;                    // posisi : baru-temp
}                                        // shg posisi skrg : pointer-baru-temp
}

void insertBefore(int key, int data){        // insert [data] before [key]
Node pointer = Find(key);                // menepatkan pointer sesuai posisi key
if(pointer == null) return;
else{
Node beforeData = head;                // bikin node beforeData di head
while(beforeData.next!=pointer){    // nge-loop sampe ketemu pointer
beforeData = beforeData.next;}
if(beforeData.next==pointer){        // kalo uda ketemu,,
Node baru = new Node(data);        // bikin node baru
beforeData.next = baru;            // posisi : beforeData-baru
baru.next=pointer;                // posisi : baru-pointer
}                                    // posisi skrg : beforeData-baru-pointer
}
}
}

public class wajibNo5 {
public static void main(String[] args) {
System.out.println(“**    Simulasi Single Linked List    **\n”);
System.out.println(“By Rina_74 & Venty_168\n\n”);

LinkedList singleLinkedList = new LinkedList();    // bikin linkedlist namanya singleLinkedList
Node a = new Node(1);        // bikin node a isinya ip=1
Node b = new Node(2);        // bikin node b isinya ip=2
Node c = new Node(3);        // bikin node c isinya ip=3
Node d = new Node(4);        // bikin node d isinya ip=4
Node e = new Node(5);        // bikin node e isinya ip=5
singleLinkedList.addLast(a);    // @ node di-addLast
singleLinkedList.addLast(b);
singleLinkedList.addLast(c);
singleLinkedList.addLast(d);
singleLinkedList.addLast(e);

System.out.println(“Node awal”);
singleLinkedList.cetakSemuaNode();    // dicetak, output : 1 2 3 4 5
System.out.print(“\n”);

singleLinkedList.removeFirst();        // ngeremove awal. output : 2 3 4 5
singleLinkedList.removeLast();        // ngeremove akhir. output : 2 3 4
System.out.println(“\nSetelah diremoveFirst (1) – removeLast (5)”);
singleLinkedList.cetakSemuaNode();    // dicetak, output : 2 3 4
System.out.print(“\n”);

singleLinkedList.remove(3);        // ngeremove 3. output : 2 4
System.out.println(“\nSetelah diremove (3)”);
singleLinkedList.cetakSemuaNode();
System.out.print(“\n”);

singleLinkedList.insertAfter(4,5);    // masukin 5 setelah 4
System.out.println(“\nSetelah di-insertAfter  (insert 5 after 4)”);
singleLinkedList.cetakSemuaNode();        // output : 2 4 5
System.out.print(“\n”);

singleLinkedList.insertBefore(4,3);    // masukin 3 sebelum 4
System.out.println(“\nSetelah di-insertBefore (insert 3 before 4)”);
singleLinkedList.cetakSemuaNode();        // output : 2 3 4 5
System.out.print(“\n”);

System.out.println(” “);
singleLinkedList.find(1);            // nyari 1, tapi di list tidak ada data 1
System.out.print(“\n”);                // shg outputnya Ga ketemu !!!

singleLinkedList.find(5);            // nyari 5, di list ada
System.out.println(” “);            // shg outputnya Ketemu !!!
}
}

No Comments Yet »

Belum ada komentar.

RSS umpan untuk komentar-komentar dalam tulisan ini. URI Lacak Balik

Tinggalkan komentar

Didukung oleh WordPress.com