Minggu, 29 Maret 2009

Program Stack

Stack adalah sebuah program koleksi objek yang berprinsip LIFO (Last In First Out). Artinya yang terakhir masuk akan pertama di layani. Contoh umum adalah buku yang disusn bertumpuk di atas meja. Dimana jika kita urutkan dengan array sampai sejumlah n, maka n=0 adalah dasar (tergantung dari mana ia kana mengambil patokan posisi dasar) yang jika diilustrasikan adalah sebagai dasar meja. Buku yang diambil paling atas disebut sebagai Top. Berdasarkan prinsip LIFO maka buku pada posisi Top akan diambil terlebih dahulu. Operasi yang terjadi adalah Push atau masuk, insert dan Pop atau ambil atau delete.
Stack ada I, yaitu stack I atau stack sederhana. Stack I memiliki kondisi kosong (top=0), penuh(top=n), bisa diisi(top">"0||top"<"n) dan ada isinya (top">"0&&top"<"n).
Stack II atau stack yang mempunyai dua dasar. Dasar kedua berumus
n+1;
Stack II memiliki kondisi, stack kosong (top1=0 & top2=n+1). Penuh, (top2-top1=1). Stack bisa diisi (top1"<"0&&top2">"n+1||top2-top1">"1). stack ada isinya (top1"<"0&&top2">"n+1&&top2-top1">"1.
Berikut adalah contoh stack dengan tipe 1.




#include"<"iostream.h">"
#include"<"conio.h">"
#include"<"stdlib.h">"
#include"<"stdio.h">"
const X=10; //ukuran maksimum dari stack
void push(int stack[], int *top, int value);
void pop(int stack[], int *top, int *value);
int main()
{
int stack[X];
int top = 0;
int n, value;
do
{
do
{
cout"<""<"Masukkan Nilai yang akan di Push: ";
cin">"">"value;
push(stack,&top,value);
cout"<""<"Tekan 1 untuk melakukan Push jika tidak maka akan lanjut ke Pop: ";
cin">"">"n;
cout"<""<"endl;
}
while (n == 1);

cout"<""<"endl;
cout"<""<"Tekan 1 untuk Melakukan Pop: ";
cin">"">"n;

while(n == 1)
{
pop(stack,&top,&value);
cout"<""<"Nilai yang di Pop :"<""<"value"<""<"endl;
cout"<""<"Tekan 1 untuk melakukan Pop jika tidak maka akan lanjut ke Push: ";
cin">"">"n;
cout"<""<"endl;
}

cout"<""<"endl;
cout"<""<"Tekan 1 untuk Melanjutkan Push: ";
cin">"">"n;

} while (n == 1);
getch();
return 0;
}

void push(int stack[], int *top, int value)
{
if(*top "<" X)
{
*top = *top + 1;
stack[*top] = value;
}
else
{
cout"<""<"Stack Penuh, Push Nilai Tidak Dapat Dilakukan"<""<"endl;
}
}

void pop(int stack[], int *top, int *value)
{
if(*top "<"= X && stack[*top] ">"0 )
{
*value = stack[*top];
*top = *top -1;
}
else
{
cout"<""<"Stack Kosong, Pop Nilai Tidak Dapat Dilakukan"<""<"endl;
exit(0);
cout"<""<"endl;
}
}

Lanjutkan baca......