Selasa, 05 Januari 2016

Stack

Stack / Tumpukan adalah bentuk khusus dari list linear. Pada stack, penghapusan serta pemasukan elemennya hanya dapat dilakukan pada satu posisi, yakni posisi akhir dari list. Posisi ini disebut puncak atau Top dari stack.

Stack bersifat LIFO (Last In First Out) artinya Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack.
Operasi pada stack :
• Create (S)     = Berguna untuk membuat sebuah stack kosong
• Isempty (S)   = Berguna untuk mengecek sebuah nilai pada stack. Nilai akan bernilai True jika stack tidak terdapat sebuah elemen di dalamnya, sedangkan nilai akan bernilai False jika stack terdapat elemen di dalamnya.
• Push(Elemen,S) = Berguna untuk menyisipkan atau memasukkan sebuah elemen ke dalam stack, dimana menyisipkan melalui paling atas/belakang.
• Pop (S) = Berguna untuk menghapus sebuah elemen yang terdapat paling atas/belakang pada sebuah stack.
• Clear = Berguna untuk mengkosongkan sebuah stack.
• IFull  = Berguna untuk mengecek apakah stack sudah penuh atau belum.

Dalam stack terdapat Overflow dan Underflow, artinya :
• Overflow      : Terjadi jika stack sudah terisi penuh tetapi kita melakukan opeasi push.
• Underflow    : Terjadi jika stack sudah kosong tetapi kita melakukan operasi pop.


Program Stack pada bahasa C.

#include <stdio.h>
#include <ctype.h>
#define MAXSIZE 4

int stack[MAXSIZE];
int top;
void main()
{
void push(int);
int pop();
int i,num;
char pill= 0;
clrscr();

while(pill == 0)
{
clrscr();
printf("\n +==== MAIN MENU ====+");
printf("\n +===================+");
printf("\n | 1. Push Stack     |");
printf("\n | 2. Pop Stack      |");
printf("\n | 3. Keluar         |");
printf("\n +===================+\n");
printf("\n pilihan : ");
scanf("%d",&pill);

switch(pill)
{
case 1: clrscr();
printf(" Push elemen stack : ");
scanf("%d",&num);
push(num);
break;

case 2: clrscr();
i=pop();
printf(" Pop elemen stack  %d ",i);
break;

case 3: clrscr();
exit();
break;

default: printf("\n Maaf pilihan tersebut tidak tersedia !!");
}

printf("\n\n Apakah anda ingin keluar [1/0] ? ");

scanf("%d" , &pill);
}
}


void push(int y)
{

if(top>MAXSIZE)
       {
       printf("\n STACK telah terisi penuh !! ");
       return;
       }
else
{
top++;
stack[top]=y;
}
}

int pop()
{
int a;
if(top<=0)
{
printf("\n STACK kosong !! ");
return 0;
}
else
{
a=stack[top];
top--;
}
return(a);

}

Tidak ada komentar:

Posting Komentar