STRUKTUR DATA - PRAKTIKUM 7
Tugas Praktikum 7 Struktur Data Circular Linked List

Nama : Yoga Ilham Rakasiwi
NIM : 16.MI.0010
Manajemen Informatika 2017/2018
Insert at Head : Insert data di Awal.
Insert at Tail : Insert data di Akhir.
Insert at Position : Insert di posisi spesifik tertentu.
Delete at Head : Delete data di Awal.
Delete at Tail : Delete data di Akhir.
Delete at Position : Delete di posisi spesifik tertentu.
Display : Menampilkan list.
Is Empty : Cek list kosong atau tidak.
Berikut contoh proogramnya :
1.1
public class CircularLinkedListCLL
{
private Node start;public class CircularLinkedListCLL
{
private int count;
public void append(int x)
{
count++;
Node temp = new Node(x);
if (start == null)
{
start = temp;
}
else
{
Node tp = start;
while(tp.link!=start)
{
tp=tp.link;
}
tp.link=temp;
}
temp.link=start;
}
1.2
public void addBeg(int x)
{
count++;
Node temp = new Node(x);
if(start==null)
{
temp.link=temp;
}
else
{
Node tp=start;
while(tp.link!=start)
{
tp=tp.link;
}
tp.link=temp;
temp.link=start;
}
start=temp;
}
public void addBeg(int x)
{
count++;
Node temp = new Node(x);
if(start==null)
{
temp.link=temp;
}
else
{
Node tp=start;
while(tp.link!=start)
{
tp=tp.link;
}
tp.link=temp;
temp.link=start;
}
start=temp;
}
1.3
public void addAt(int pos, int x)
{
Node temp, tp;
temp=new Node(x);
tp=start;
for(int i=0;i<pos;i++)
{
if(tp.link==start)
break;
tp=tp.link;
}
temp.link=tp.link;
tp.link=temp;
count++;
}
public void addAt(int pos, int x)
{
Node temp, tp;
temp=new Node(x);
tp=start;
for(int i=0;i<pos;i++)
{
if(tp.link==start)
break;
tp=tp.link;
}
temp.link=tp.link;
tp.link=temp;
count++;
}
1.4
public void displayList()
{
if(start==null)
System.out.println("List is Empty..");
else
{
Node temp=start;
System.out.print("->");
while(temp.link!=start)
{
System.out.println(" "+temp.data);
temp=temp.link;
}
System.out.println(temp.data+" -> ");
}
}
public void displayList()
{
if(start==null)
System.out.println("List is Empty..");
else
{
Node temp=start;
System.out.print("->");
while(temp.link!=start)
{
System.out.println(" "+temp.data);
temp=temp.link;
}
System.out.println(temp.data+" -> ");
}
}
1.5
public void deleteAt(int position)
{
Node current=start;
Node previous=start;
for(int i=0;i<position;i++)
{
if(current.link==start)
break;
previous=current;
current=current.link;
}
System.out.print(current.data);
if(position==0)
deleteFirst();
else
previous.link=current.link;
count--;
}
public void deleteAt(int position)
{
Node current=start;
Node previous=start;
for(int i=0;i<position;i++)
{
if(current.link==start)
break;
previous=current;
current=current.link;
}
System.out.print(current.data);
if(position==0)
deleteFirst();
else
previous.link=current.link;
count--;
}
1.6
public void deleteFirst()
{
Node temp=start;
while(temp.link!=start)
{
temp=temp.link;
}
temp.link=start.link;
start=start.link;
count--;
}
public int getCount()
{
return count;
}
public void deleteFirst()
{
Node temp=start;
while(temp.link!=start)
{
temp=temp.link;
}
temp.link=start.link;
start=start.link;
count--;
}
public int getCount()
{
return count;
}
1.7
private static class Node
{
int data;
Node link;
public Node(int data)
{
this.data=data;
}
public Node(int data, Node link)
{
this.data=data;
this.link=link;
}
}
private static class Node
{
int data;
Node link;
public Node(int data)
{
this.data=data;
}
public Node(int data, Node link)
{
this.data=data;
this.link=link;
}
}
Menggunakan NetBeans :
Buatlah java class baru dengan nama CircularLinkedListCLL dan tuliskan script berikut :
Tambahkan juga 2 method lagi seperti berikut di dalam class CircularLinkedListCLL :
Masih dalam class yang sama buatlah class baru tipe static untuk Node seperti berikut :
public class CLLUserClass {
public static void main(String args[])
{
CircularLinkedListCLL ccl= new CircularLinkedListCLL();
ccl.addBeg(1);
ccl.append(2);
ccl.append(3);
ccl.append(4);
ccl.addAt(1, 0);
ccl.append(5);
ccl.append(12);
ccl.displayList();
ccl.deleteAt(1);
System.out.println(" After deletion....");
ccl.displayList();
}
}
Menggunakan NetBeans :
Run :
Buatlah sebuah program dengan Circular Linkedlist untuk memberi kesempatan kepada user untuk memilih apakah dia mau menggunakan fungsi insert di belakang atau di depan, apakah mau mnghapus data di depan atau di belakang, atukah ingin melihat isi dari sebuah list yang telah berisi data maupun mengecek apakah list tersebut isi atau kosong. Berikut kodingnya :
public class Node
{
private int data;
private Node link;
public Node()
{
link=null;
data=0;
}
public Node(int d, Node n)
{
data=d;
link=n;
}
public void setLink(Node n)
{
link=n;
}
public void seData(int d)
{
data=d;
}
public Node getLink()
{
return link;
}
public int getData()
{
return data;
}
}
class linkedList
{
private Node start;
private Node end;
public int size;
public linkedList()
{
start=null;
end=null;
size=0;
}
public boolean isEmpty()
{
return start==null;
}
public int getSize()
{
return size;
}
public void insertAtStart(int val)
{
Node nptr= new Node(val,null);
nptr.setLink(start);
if(start==null)
{
start=nptr;
nptr.setLink(start);
end=start;
}
else
{
end.setLink(nptr);
start=nptr;
}
size++;
}
public void insertAtEnd(int val)
{
Node nptr = new Node(val,null);
nptr.setLink(start);
if(start==null)
{
start=nptr;
nptr.setLink(start);
end=start;
}
else
{
end.setLink(nptr);
end=nptr;
}
size++;
}
public void insertAtPos(int val, int pos)
{
Node nptr=new Node(val,null);
Node ptr = start;
pos = pos - 1;
for(int i=1; i<size-1; i++)
{
if(i==pos)
{
Node tmp = ptr.getLink();
ptr.setLink(nptr);
nptr.setLink(tmp);
break;
}
ptr=ptr.getLink();
}
size++;
}
public void deleteAtPos(int pos)
{
if(size == 1 && pos == 1)
{
start = null;
end = null;
size = 0;
return;
}
if(pos == 1)
{
start = start.getLink();
end.setLink(start);
size--;
return;
}
if(pos == size)
{
Node s = start;
Node t = start;
while(s != end)
{
t = s;
s = s.getLink();
}
end = t;
end.setLink(start);
size--;
return;
}
Node ptr = start;
pos = pos-1;
for(int i = 1; i < size - 1; i++)
{
if(i == pos)
{
Node tmp = ptr.getLink();
tmp = tmp.getLink();
ptr.setLink(tmp);
break;
}
ptr = ptr.getLink();
}
size--;
}
public void display()
{
System.out.print("\nCircular Singly LinkedList = ");
Node ptr = start;
if(size == 0)
{
System.out.print("empty\n");
return;
}
if(start.getLink() == start)
{
System.out.print(start.getData()+ " -> " +ptr.getData()+ "\n");
return;
}
System.out.print(start.getData()+" -> ");
ptr = start.getLink();
while(ptr.getLink() != start)
{
System.out.print(ptr.getData()+" -> ");
ptr = ptr.getLink();
}
System.out.print(ptr.getData()+" -> ");
ptr = ptr.getLink();
System.out.print(ptr.getData()+"\n");
}
}
Menggunakan NetBeans :
Lalu membuat class baru :
Berikut codingnya :
import java.util.Scanner;
public class CircularSinglyLinkedList
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
linkedList list = new linkedList();
System.out.println("Circular Singly LinkedList Operations ");
list.insertAtStart(6);
list.insertAtEnd(7);
list.insertAtEnd(5);
list.display();
char ch;
do
{
System.out.println("1. insert di awal");
System.out.println("2. insert di akhir");
System.out.println("3. insert di posisi tertentu");
System.out.println("4. delete posisi tertentu");
System.out.println("5. cek isi atau tidak");
System.out.println("6. cek semua data");
int choice = scan.nextInt();
switch(choice)
{
case 1 :
System.out.println("Masukkan angka yang diinginkan");
list.insertAtStart(scan.nextInt());
break;
case 2 :
System.out.println("Masukkan angka yang diinginkan");
list.insertAtEnd(scan.nextInt());
break;
case 3 :
System.out.println("Masukkan angka yang diinginkan");
int num = scan.nextInt();
System.out.println("Masukkan posisi (angka) ");
int pos = scan.nextInt();
if(pos <= 1 || pos > list.getSize())
System.out.println("invalid position \n");
else
list.insertAtPos(num, pos);
break;
case 4 :
System.out.println("Masukkan angka yang akan dihapus");
int p = scan.nextInt();
if(p < 1 || p > list.getSize())
System.out.println("Invalid position \n");
else
list.deleteAtPos(p);
break;
case 5 :
System.out.println("Status kosong= "+ list.isEmpty());
break;
case 6 :
System.out.println("Size = "+ list.getSize() +"\n");
break;
default :
System.out.println("Wrong Entry \n");
break;
}
list.display();
System.out.println("\nApakah anda ingin melanjutkan (y atau t)\n");
ch = scan.next().charAt(0);
}
while(ch == 'Y' || ch == 'y');
}
}
Run :




















Komentar
Posting Komentar