Stack & Queue : Implementasi Stack 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 ptr ditempatkan pada node tersebut.

2.1.2.2.Linked list berisi node.

2.1.2.2.1.Ptr.next ditempatkan pada node tersebut.

2.1.2.2.2.Ptr ditempatkan pada ptr.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.Hapus1 diinisialisasi dengan nilai null dan operasi Hapus dihentikan.

2.2.2.1.1.2.Hapus1  bukan head.

2.2.2.1.1.2.1.Hapus2 (node dibelakang node yang akan dihapus) selanjutnya adalah hapus1.next.

2.2.2.1.1.2.2.Hapus2.next berisi null

2.2.2.1.1.2.2.1.Ptr ditempatkan pada hapus2.

2.2.2.1.1.2.3.Hapus1 diinisialisasi dengan nilai null dan operasi Hapus 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.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.Inisialisasi variable cetak = head.

2.3.3.Selama cetak tidak berisi null akan dilooping.

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 STACK

{

public static void main(String[] args)

{

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

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

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

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

int jawab1=0, jawab3=0;

do

{

String operasi=JOptionPane.showInputDialog("Operasi yang dapat Anda pilih :\n1. Push\n2. Pop\n3. Peek\n4. Print Stack");

int op=Integer.parseInt(operasi);

switch(op) //pilihan operasi

{

case 1 :

{

do

{

String push=JOptionPane.showInputDialog("Push :");

System.out.print("\nPush ("+push+")");

Operasi.Push(push);

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

jawab1=Integer.parseInt(jawab);

}

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

}

break;

case 2 :

{

System.out.println();

Operasi.Pop();

}

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); //looping lagi

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 bottom, top;

private int nitem, item;

public void classop() //konstruktor

{

bottom=null;

top=null;

nitem=0;

}

public void Push(String push) //methode untuk memasukkan node

{

classnd node=new classnd();

node.input=push;

if(bottom==null) //jika stack kosong

{

bottom=top=node; //bottom & top terletak pada 1 node

}

else //stack berisi

{

node.prev=top;

top.next=node;

top=top.next;

}

nitem++; //tambah jumlah item

}

public void Pop() //methode untuk mengeluarkan node

{

if(nitem!=0) //jika stack berisi

{

System.out.println("Pop :"+top.input);

if(nitem!=1) //jika item dalam stack lebih 1

{

top.next=top;

top=top.prev;

top.next=null;

}

else //jika item dalam stack tinggal 1

top.next=top.prev=top=bottom=null;

nitem--; //kurangi jumlah item

return;

}

else //jika stack kosong

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

}

public void Peek() //methode untuk melihat top

{

if(nitem!=0) //jika stack berisi

{

System.out.println("Top => "+top.input);

}

else //jika stack kosong

{

top=null; //top berisi null

System.out.println("Top => "+top);

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

}

}

public void Print() //methode untuk mencetak stack

{

item=nitem;

classnd print=bottom;

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

while(item!=0)

{

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

print=print.next;

--item;

}

System.out.print("null");

System.out.println();

}

}

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

[FREAX]


Actions

Information

2 responses

7 05 2011
kerapolinema

waduh. makasih banyak gan, artikelnya udah nolong ane hari ini..

22 05 2012
fveven

Anda adlah orang yg menuju kpd kesuksesan,

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: