Hidup Ini Bagai Putaran Roda, Harus di Kayuh Agar Terus Berputar'

Jumat, 23 Januari 2009

STACK

Dalam Ilmu komputer Stack atau tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix). Ciri Stack :
  • Elemen TOP (puncak) diketahui
  • penisipan dan penghapusan elemen selalu dilakukan di TOP
  • LIFO

Pemanfaatan Stack :

  • Perhitungan ekspresi aritmatika (posfix)
  • algoritma backtraking (runut balik)
  • algoritma rekursif

Operasi Stack yang biasanya :

  1. Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack
  2. Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack
  3. IsEmpty ()
  4. IsFull ()
  5. dan beberapas selektor yang lain.
Disini saya akan memberikan Contoh coding stack di Java
/**
* @(#)Text1.java
*
*
* @author Siswoko
* @version 1.00 2009/1/23
*/


import java.io.*;
import java.util.Hashtable;
import java.util.Enumeration;

public class Stack {
public static void main(String args[]) {
System.out.println("Contoh STACK \nby : Siswoko ");
BufferedReader entry=new BufferedReader(new InputStreamReader(System.in));
Hashtable myHashtable=new Hashtable();
Enumeration enum1;
try {
int data=0,urutan=0,temp=0,pilihan=0;
do{
System.out.print("\nMasukkan data (0 - selesai) : ");
data=Integer.parseInt(entry.readLine());
if (data!=0) {
urutan++;
myHashtable.put(new Integer(urutan),new Integer(data));
System.out.print(data);
}
}while(data!=0);
do{
System.out.print("\n\n MENU OPERASI STACK"+
"\n 1 - put() --> menambahkan Stack"+
"\n 2 - insert --> menyisipkan Stack"+
"\n 3 - remove() --> mengurangi Stack"+
"\n 4 - select removed--> mengurangi sesuai indeks"+
"\n 5 - isEmpty() --> mengecek apakah Stack kosong?"+
"\n 6 - clear() --> mengosongkan STACK"+
"\n 7 - size() --> mengetahui banyak data di Stack"+
"\n (0 - selesai)"+
"\n\nPilihan Anda : ");
pilihan=Integer.parseInt(entry.readLine());

//operasi pada variabel STACK
switch (pilihan){
case 0 : break;
case 1 :{System.out.print("\nMasukkan data baru (0 - cancel) : ");
data=Integer.parseInt(entry.readLine());
if (data!=0) {
System.out.print(data);
urutan++;
myHashtable.put(new Integer(urutan),new Integer(data));
}break;
}
case 2 :{ System.out.print("\nMasukkan data baru (0 - cancel) : ");
data=Integer.parseInt(entry.readLine());
if (data!=0) {
System.out.print(data);
System.out.print("\nMasukkan lokasi data : ");
temp=Integer.parseInt(entry.readLine());
if (temp<0||temp>urutan) {
System.out.println("\nSalah input lokasi!");
temp=0;
break;
}
else{
System.out.print(temp);
myHashtable.put(new Integer(temp),new Integer(data));
temp=0;
}
}break;
}
case 3 :{ if (myHashtable.isEmpty())
System.out.println("\nData telah habis!");
else{
System.out.print("\nData teratas dihapus : "+
myHashtable.remove(new Integer(urutan)));
urutan--;
}
break;
}
case 4 :{ System.out.print("\nMasukkan lokasi data (1-"+urutan+") yang akan dihapus (0 - cancel) : ");
temp=Integer.parseInt(entry.readLine());
if (temp==0)
break;
else{
System.out.print(temp);
myHashtable.remove(new Integer(temp));
}break;
}
case 5 :{ if (myHashtable.isEmpty())
System.out.println("\nData telah habis!");
else
System.out.println("\nData tersedia.");
break;
}
case 6 :{ System.out.println("\nAnda telah mengosongkan varibel Stack!");
myHashtable.clear();
break;
}
case 7 :{ System.out.println("\nData di varibel Stack adalah "+myHashtable.size());
break;
}
default : System.out.println("Pilihan tidak tersedia!\n");
}
}while (pilihan!=0);
//menampilkan seluruh data Stack
System.out.print("\n PILIHAN TAMPILAN"+
"\n 1 - LIFO (Last In Fist Out)"+
"\n 2 - FIFO (First In First Out)"+
"\n\nPilihan Anda : ");
pilihan=0;
pilihan=Integer.parseInt(entry.readLine());
System.out.print("\nData di variabel Stack : ");

if (!myHashtable.isEmpty()){
switch (pilihan) {
//LIFO
case 1 :{

enum1=myHashtable.elements();
while (enum1.hasMoreElements())
System.out.print("\n\t"+enum1.nextElement());

/* while (urutan>0) {
Object object=myHashtable.get(new Integer(urutan));
System.out.print("\n\t"+object);
urutan--;
}
*/ break;
}
//FIFO
case 2 :{
for (int i=1;i<=urutan;i++) {
Object object=myHashtable.get(new Integer(i));
System.out.print("\n\t"+object);
}
break;
}
default : System.out.print("Pilihan tidak tersedia!\n");
}
}else
System.out.print("kosong\n");
System.out.println();
} catch (Exception e) {
System.out.println("\nSalah Input data!");
}
}
}


0 komentar:

Template by : Kowsi