Stack & Queue : Implementasi Queue dalam Java

7 04 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.Node.prev ditempatkan pada tail.

2.1.2.2.2.Tail.next ditempatkan pada node.

2.1.2.2.2.Tail ditempatkan pada tail.next.

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.Head.prev dan hapus1 diinisialisasi dengan nilai null, kemudian operasi Hapus dihentikan.

2.2.2.1.1.2.Hapus1  bukan head.

2.2.2.1.1.2.1.Hapus1.next adalah null.

2.2.2.1.1.2.1.1.Tail ditempatkan pada tail.prev dan tail.next diinisialisasi dengan nilai null.

2.2.2.1.1.2.2.Hapus1.next bukan null.

2.2.2.1.1.2.2.1.Inisialisasi variable bantu sama dengan hapus.prev.

2.2.2.1.1.2.2.2.Bantu.next ditempatkan pada hapus1.next.

2.2.2.1.1.2.2.3.Inisialisasi variable bantu2 sama dengan hapus.next.

2.2.2.1.1.2.2.4.Bantu2.prev ditempatkan pada Bantu, kemudian hapus1 diinisialisasi dengan nilai null.

2.2.2.1.1.2.3.Menghentikan operasi Hapus.

2.2.2.1.2.Hapus1 tidak sama dengan hapus1.input.

2.2.2.1.2.1.Hapus1 ditempatkan pada hapus1.next.

2.2.2.2.Node yang akan dihapus (hapus1) adalah null.

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 Cetakdari class classop.

2.3.2.Program meminta user untuk memilih cara cetak double linkedlist.

2.3.2.1.Mencetak dari head ke tail.

2.3.2.1.1.Inisialisasi variable cetak = head.

2.3.2.1.2.Selama cetak tidak berisi null akan dilooping.

2.3.2.1.2.1.Mencetak cetak.input.

2.3.2.1.2.2.Menempatkan cetak pada cetak.next.

2.3.2.2.Mencetak dari tail ke head.

2.3.2.2.1.Inisialisasi variable cetak = tail.

2.3.2.2.2.Selama cetak tidak berisi null akan dilooping.

2.3.2.2.2.1.Mencetak cetak.input.

2.3.2.2.2.2.Menempatkan cetak pada cetak.prev.

2.3.2.2.Program menampilkan laporan bahwa cara yang dipilih tidak ada.

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 QUE

{

public static void main(String[] args)

{

classop Operasi=new classop(); //membuat obyek dari class classop

JOptionPane.showMessageDialog(null,"     MODUL 2 PSD\n             QUE\nOleh KELOMPOK 84","SELAMAT DATANG",JOptionPane.INFORMATION_MESSAGE);

System.out.println("               MODUL 2 PSD QUE Oleh KELOMPOK 84");

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

int jawab1=0, jawab3=0;

do

{

String operasi=JOptionPane.showInputDialog("Operasi yang dapat Anda pilih :\n1. Insert\n2. Remove\n3. Peek\n4. Print Que");

if(operasi!="")

{

int op=Integer.parseInt(operasi);

switch(op) //pilihan operasi

{

case 1 :

{

do

{

String Insert=JOptionPane.showInputDialog("Insert :");

System.out.print("\nInsert ("+Insert+")");

Operasi.Insert(Insert);

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

if(jawab!="")

jawab1=Integer.parseInt(jawab);

else

break;

}

while(jawab1==1); //looping lagi

}

break;

case 2 :

{

System.out.println();

Operasi.Remove();

}

break;

case 3 :

{

System.out.println();

Operasi.Peek();

}

break;

case 4 :

{

System.out.println();

Operasi.Print();

}

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 DI MODUL 3",JOptionPane.INFORMATION_MESSAGE);

}

}

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

class classnd

{

public String input;

public classnd next, prev;

}

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

class classop

{

private classnd rear, front;

private int nitem, item;

public void classop() //konstruktor

{

rear=null;

front=null;

nitem=0;

}

public void Insert(String Insert) //methode untuk menambah node

{

classnd node=new classnd();;

node.input=Insert;

if(rear==null && front==null) //que kosong

{

rear=front=node;

}

else //que berisi

{

node.prev=rear;

rear.next=node;

rear=rear.next;

}

nitem++; //tambah jumlah item

}

public void Remove() //methode untuk mengeluarkan node

{

if(nitem!=0) //que berisi

{

System.out.println("Remove :"+front.input);

if(nitem!=1) //jumlah item lebih dari 1

{;

front=front.next;

}

else //item dalam que tinggal 1

front.next=rear.next=front.prev=rear.prev=front=rear=null;

nitem--; //kurangi jumlah item

return;

}

else //que kosong

JOptionPane.showMessageDialog(null,"Maaf, Que kosong","LAPORAN",JOptionPane.ERROR_MESSAGE);

}

public void Peek() //methode untuk melihat front

{

if(nitem!=0) //que berisi

{

System.out.println("Front => "+front.input);

}

else //que kosong

JOptionPane.showMessageDialog(null,"Maaf, Que kosong","LAPORAN",JOptionPane.ERROR_MESSAGE);

}

public void Print() //methode untuk mencetak que

{

item=nitem;

classnd print=rear;

System.out.println("\nMencetak Que :");

System.out.print("null");

while(item!=0)

{

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

print=print.prev;

--item;

}

System.out.println();

}

}

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

[FREAX]


Actions

Information

One response

21 04 2010
james smith

very informative..thanks a lot..james
javajobs.net

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: