Linked List : Implementasi Circular Linked List dalam Java

6 02 2010

Display Output Program :



Algoritma Program :

1.Program menampilkan statemen selamat datang.

2.Program meminta user untuk memilih operasi yang ingin dikerjakan.

2.1.Operasi Tambah.

2.1.1.Program meminta user untuk memasukkan node yang akan ditambahkan.

2.1.2.Program memanggil method Tambah dari class classop.

2.1.2.1.Linked list belum berisi node (head = null)

2.1.2.1.1.Head dan tail ditempatkan pada node tersebut.

2.1.2.2.Linked list berisi node.

2.1.2.2.1.tail.next ditempatkan pada node tersebut.

2.1.2.2.2.Tail ditempatkan pada tail.next.

2.1.2.2.3.Tail.next ditempatkan pada head.

2.1.3.Program menanyakan apakah user ingin menambahkan node lagi.

2.1.3.1.Program akan menjalankan operasi Tambah kembali.

2.1.3.2.Program menghentikan operasi Tambah.

2.2.Operasi Hapus.

2.2.1.Program meminta user memasukkan node yang akan dihapus.

2.2.2.Program memanggil method Hapus dari class classop.

2.2.2.1.Selama node yang akan dihapus (hapus1) bukan null atau ada pada linkedlist, akan terjadi looping.

2.2.2.1.1.Hapus1 sama dengan hapus1.input.

2.2.2.1.1.1.Hapus1 adalah head.

2.2.2.1.1.1.1.Head ditempatkan pada hapus1.next.

2.2.2.1.1.1.2.Hapus1 diinisialisasi dengan nilai null.

2.2.2.1.1.1.3.Tail.next ditempatkan pada head dan operasi Hapus dihentikan.

2.2.2.1.1.2.Hapus1  bukan head.

2.2.2.1.1.2.1.Hapus1 adalah tail

2.2.2.1.1.2.1.1.Hapus1.next ditempatkan pada head.next.

2.2.2.1.1.2.1.2.Inisialisasi hapus1 bernilai null.

2.2.2.1.1.2.1.3.Tail ditempatkan pada hapus2.

2.2.2.1.1.2.1.4.Tail.next ditempatkan pada head dan operasi dihentikan.

2.2.2.1.1.2.2.Hapus1 bukan tail

2.2.2.1.1.2.2.1.Hapus2.next ditempatkan pada hapus1.next.

2.2.2.1.1.2.2.2.Inisialisasi hapus1 dengan nilai null dan operasi dihentikan.

2.2.2.1.2.Hapus1 tidak sama dengan hapus1.input.

2.2.2.1.2.1.Hapus2 ditempatkan pada hapus1.

2.2.2.1.2.2.Hapus1 ditempatkan pada hapus1.next.

2.2.2.2.1.Program menampilkan laporan bahwa node yang akan dihapus tidak ditemukan.

2.3.Operasi Cetak.

2.3.1.Program memanggil method Cetak dari class classop

2.3.2.Inisialisasi variable cetak = head.

2.3.3.Selama cetak tidak berisi null akan dilooping sebanyak 20 kali cetak node.

2.3.3.1.Mencetak cetak.input.

2.3.3.2.Menempatkan cetak pada cetak.next.

2.4.Program menampilkan laporan bahwa operasi yang dipilih tidak ada.

3.Program menanyakan apakah user ingin memilih operasi yang lain.

3.1.Program mengulangi dari awal (looping).

3.2.Program menampilkan statemen terima kasih.

Source Code Program :

import javax.swing.*;

public class CSLL

{

public static void main(String[] args)

{

classop Operasi=new classop();

JOptionPane.showMessageDialog(null,"              MODUL 1 PSD\nCIRCULAR SINGLE LINKEDLIST\n        Oleh KELOMPOK 84","SELAMAT DATANG",JOptionPane.INFORMATION_MESSAGE);

System.out.println("             MODUL 1 PSD CIRCULAR SINGLE LINKEDLIST Oleh KELOMPOK 84");

System.out.println("             <<<<<<<=========================================>>>>>>>\n");

int jawab1=0, jawab3=0;

do

{

String operasi=JOptionPane.showInputDialog("Operasi yang dapat Anda pilih :\n1.Tambah\n2. Hapus\n3. Cetak");

int op=Integer.parseInt(operasi);   //konversi string-int

switch(op)

{

case 1 :

{

do

{

String tambah=JOptionPane.showInputDialog("Menambahkan Node :");

System.out.print("\nMenambahkan Node ("+tambah+")");

Operasi.Tambah(tambah);

String jawab=JOptionPane.showInputDialog("Tekan '1' jika ingin menambahkan lagi");

jawab1=Integer.parseInt(jawab);

}

while(jawab1==1);

}

break;

case 2 :

{

String hapus=JOptionPane.showInputDialog("Menghapus Node :");

System.out.print("\nMenghapus Node ("+hapus+")");

Operasi.Hapus(hapus);

}

break;

case 3 :

{

System.out.println();

Operasi.Cetak();

}

break;

default :

JOptionPane.showMessageDialog(null,"Maaf, operasi yang Anda pilih tidak ada","LAPORAN",JOptionPane.ERROR_MESSAGE);

}

String jawab2=JOptionPane.showInputDialog("Tekan '1' jika ingin memilih operasi yang lain");

jawab3=Integer.parseInt(jawab2);

}

while(jawab3==1);

JOptionPane.showMessageDialog(null,"TERIMA KASIH ATAS KUNJUNGAN ANDA","SAMPAI JUMPA",JOptionPane.INFORMATION_MESSAGE);

}

}

//============================================================================//

class classnd

{

public String input;

public classnd next;

}

//============================================================================//

class classop

{

private classnd head, tail;

public void classop()

{

head=null;

tail=null;

}

public void Tambah(String tambah)

{

classnd node=new classnd();

node.input=tambah;

if(head==null)

{

head=tail=node;   //blm ada isi

}

else

{

tail.next=node;   //tail next menunjuk ke node

tail=tail.next;   //tail menunjuk ke tail next(node)

tail.next=head;   //tail next menunjuk head

}

}

public void Hapus(String hapus)

{

classnd hapus1=head, hapus2=head;

while(hapus1!=null)

{

if(hapus.equals(hapus1.input))      //cek kesamaan 2 string

{

if(hapus1==head)

{

head=hapus1.next;

hapus1=null;

tail.next=head;

return;     //kembali ke fungsi

}

else

{

if(hapus1==tail)

{

hapus1.next=head.next;

hapus1=null;

tail=hapus2;

tail.next=head;

return;

}

else

{

hapus2.next=hapus1.next;

hapus1=null;

return;

}

}

}

else

{

hapus2=hapus1;

hapus1=hapus1.next;

}

}

if(hapus1==null)

JOptionPane.showMessageDialog(null,"Maaf, data yang akan Anda hapus tidak ditemukan","LAPORAN",JOptionPane.ERROR_MESSAGE);

}

public void Cetak()

{

classnd cetak=head;     //cetak mulai dari head

System.out.println("Mencetak LinkList:");

for(int i=0; i<20; i++)

{

System.out.print(cetak.input+"->");

cetak=cetak.next; //cetak selanjutnya

}

//System.out.print("null");

System.out.println();

}

}


Posted By : Evan Yofiyanto @ Evan’s Blog : Kuliah Informatika (kuliahinformatika.wordpress.com)

[FREAX]


Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: