Stack
pada Java
Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan buku, ketika mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu persatu dari buku yang paling atas dari tumpukan buku tersebut. Sebuah stack hanya dapat ditambahkan dan dikurangi elemennya hanya dari satu sisi yakni elemen atasnya atau biasa disebut Top Of Stack.
Fungsi
dalam Stack:
·
Fungsi init: fungsi yang digunakan untuk inisialisasi atau
membuat stack baru yang masih kosong.
·
Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
·
Fungsi empty: digunakan untuk mengetahui stack kosong atau
tidak.
·
Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap
kosong apabila puncak stack berada pada posisi -1.
·
Fungsi
push: digunakan untuk menambahkan data ke dalam stack. Penambahan
data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah:
menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam
Linked List menggunakan method addLast
·
Fungsi
pop: digunakan untuk mengeluarkan data teratas stack dengan syarat
bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada
posisi nilai top dan menurunkan nilai top. Jika dalam Linked List menggunakan
method removeLast.
Penggunaan STACK :
* Perhitungan ekspresi aritmatika (posfix)
* algoritma backtraking (runut balik)
* algoritma rekursif
Penggunaan STACK :
* Perhitungan ekspresi aritmatika (posfix)
* algoritma backtraking (runut balik)
* algoritma rekursif
Ilustrasi :
Misalnya dalam stack ada data A,B,C,D secara berurutan mulai dari bawah (Ascending). >> Jika ingin mengeluarkan data A, maka proses yang dilakukan : POP D –>POP C –> POP B –> POP A
>> Jika ingin memasukkan data E dibawah B, maka proses yang dilakukan adalah : POP D –> POP C –> POP B –> PUSH E
COMMON ERROR :
1. Jika kondisi stack dalam keadaan sudah penuh kemudian di-PUSH, maka akan terjadi Blue Screen
2. Jika kondisi stack dalam keadaan kosong kemudian di-POP, maka akan terjadi looping tanpa henti.
CODE
Ada 2 class yang digunakan untuk program STACK dengan paradigma OOP ini. Yang pertama Main dan Stack
Misalnya dalam stack ada data A,B,C,D secara berurutan mulai dari bawah (Ascending). >> Jika ingin mengeluarkan data A, maka proses yang dilakukan : POP D –>POP C –> POP B –> POP A
>> Jika ingin memasukkan data E dibawah B, maka proses yang dilakukan adalah : POP D –> POP C –> POP B –> PUSH E
COMMON ERROR :
1. Jika kondisi stack dalam keadaan sudah penuh kemudian di-PUSH, maka akan terjadi Blue Screen
2. Jika kondisi stack dalam keadaan kosong kemudian di-POP, maka akan terjadi looping tanpa henti.
CODE
Ada 2 class yang digunakan untuk program STACK dengan paradigma OOP ini. Yang pertama Main dan Stack
Source :
CODE MAIN.JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int pilihan;
int data;
Stack result = new Stack();
public static void main(String[] args) {
int pilihan;
int data;
Stack result = new Stack();
//looping until false condition
do{
//Displaying Menu
System.out.println(“1. PUSH Item”);
System.out.println(“2. POP Item”);
System.out.println(“3. Lihat Isi Data”);
System.out.println(“0. Keluar”);
do{
//Displaying Menu
System.out.println(“1. PUSH Item”);
System.out.println(“2. POP Item”);
System.out.println(“3. Lihat Isi Data”);
System.out.println(“0. Keluar”);
Scanner input = new Scanner(System.in);
System.out.println(“Masukkan Pilihan :”);
pilihan = input.nextInt();
System.out.println(“Masukkan Pilihan :”);
pilihan = input.nextInt();
//condition for choice
if(pilihan==1){
System.out.println(“Data yang ditambahkan : “);
data = input.nextInt();
result.push(data);
}
else if(pilihan==2){
result.pop();
}
else if(pilihan==3){
result.Display();
}
else if(pilihan==0){
System.exit(0);
}
else{
System.out.println(“Pilihan Tidak Ada!!”);
}//end of condition
if(pilihan==1){
System.out.println(“Data yang ditambahkan : “);
data = input.nextInt();
result.push(data);
}
else if(pilihan==2){
result.pop();
}
else if(pilihan==3){
result.Display();
}
else if(pilihan==0){
System.exit(0);
}
else{
System.out.println(“Pilihan Tidak Ada!!”);
}//end of condition
} while(pilihan!=0);//end looping
}
}
}
CODE STACK.java
class Stack {
private boolean empty,full;
private int pos;//menujukkan tempat kosong
private int max_data = 100;
private int item [] = new int[max_data];
private boolean empty,full;
private int pos;//menujukkan tempat kosong
private int max_data = 100;
private int item [] = new int[max_data];
public Stack(){
full = false;
empty = true;
pos = 0;
}//end of constructor
full = false;
empty = true;
pos = 0;
}//end of constructor
//method isFull
public boolean isFull(){
return(full);
}//end of isFull method
public boolean isFull(){
return(full);
}//end of isFull method
//method isEmpty
public boolean isEmpty(){
return(empty);
}//end of isEmptyl method
public boolean isEmpty(){
return(empty);
}//end of isEmptyl method
//method push
public void push(int data){
if(!isFull()){
item[pos++] = data;
empty = false;
if(pos == max_data) full = true;
System.out.println(“Data sudah ditambahkan”);
}
else{
System.out.println(“Stack sudah penuh”);
}
return;
}//end of push method
public void push(int data){
if(!isFull()){
item[pos++] = data;
empty = false;
if(pos == max_data) full = true;
System.out.println(“Data sudah ditambahkan”);
}
else{
System.out.println(“Stack sudah penuh”);
}
return;
}//end of push method
//method pop
public int pop(){
int x = 0;
if(!isEmpty()){
x = item[--pos];
full = false;
public int pop(){
int x = 0;
if(!isEmpty()){
x = item[--pos];
full = false;
System.out.println(“Data yang di POP adalah :” + item[pos]);
System.out.println(“”);
item[pos]=0;
System.out.println(“”);
item[pos]=0;
if(pos==0)empty = true;
else{
System.out.println(“Stack Kosong!”);
}
}else{
System.out.println(“Stack Masih Kosong!\n”);
}
return(x);
}//end of pop method
else{
System.out.println(“Stack Kosong!”);
}
}else{
System.out.println(“Stack Masih Kosong!\n”);
}
return(x);
}//end of pop method
//method Display
public void Display(){
System.out.println(“Isi Stack Adalah : “);
public void Display(){
System.out.println(“Isi Stack Adalah : “);
//printing list item
for(int i=0; i<pos; i++){
System.out.print(item[i]+" ");
}
for(int i=0; i<pos; i++){
System.out.print(item[i]+" ");
}
System.out.println("\n");
}//end of Display
}//end of Display
}
IMPLEMENTASI
PADA PROGRAM
Bagian progam.
Tumpukan.java
public class Tumpukan {
public int
ukuran;
public long
[] tumpukan;
public int
top;
public Tumpukan(int
s){
ukuran = s;
tumpukan = new long
[ukuran];
top = -1;
}
public void push(long j){
tumpukan[++top] = j;
}
public long pop(){
return tumpukan[top--];
}
public long peek(){
return tumpukan[top];
}
public boolean isEmpty(){
return (top == ukuran-1);
}
public boolean isFull(){
return(top == ukuran-1);
}
public void baca(){
int
i=top;
while (i>0){
System.out.print(tumpukan[i]);
System.out.print("
");
i--;
}
System.out.println(" ");
}
}
|
Program Pemanggil: aplistack.java
public class aplistack{
public static void
main (String [] args){
Tumpukan
tumpukan=new Tumpukan(10);
tumpukan.push(56);
tumpukan.baca();
tumpukan.push(45);
tumpukan.baca();
tumpukan.push(67);
tumpukan.baca();
long nilai1=tumpukan.pop();
System.out.println("nilai1
= "+nilai1);
System.out.println("
");
tumpukan.push(83);
tumpukan.baca();
tumpukan.push(27);
tumpukan.baca();
long nilai2 = tumpukan.pop();
System.out.print("nilai2
= "+nilai2);
System.out.println("
");
long nilai3 = tumpukan.pop();
System.out.println("nilai3
= "+nilai3);
System.out.println("
");
tumpukan.baca();
}
}
|
1 komentar:
thanks
Posting Komentar