Tutorial Stack
STACK
Pengertian Stack
Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti sebuah tumpukan. Dengan demikian, stack merupakan salah satu struktur data yang menerapkan prinsip LIFO (Last In First Out). Dimana elemen yang terakhir disimpan dalam stack, menjadi elemen yang pertama diambil.
Kelebihan Dan Kekurangan Stack
1. Kelebihan
membantu mengelola data dengan metode LIFO
secara otomatis membersihkan objek
tidak mudah rusak
ukuran variabel tidak dapat diubah
mengontrol memori secara mandiri
2. Kekurangan
memori stack sangat terbatas
ada kemungkinan stack akan meluap atau overflow jika terlalu banyak objek
tidak memungkinkan akses acak, karena harus mengeluarkan tumpukan paling atas terlebih dahulu untuk mengakses tumpukan paling bawah
Jenis-Jenis Operasi Stack
1.Push : menambahkan item pada tumpukan paling atas
2.Pop : mengambil item paling atas
3.Clear : mengosongkan stack
4.Isempty : digunakan untuk mengecek apakah stack udah kosong
5.Isfull : digunakan untuk mengecek apakah stack udah penuh
Pemrograman Stack dalam Bahasa C
#include<stdio.h>
#define MAX 50
#define true 1
#define false 0
char stack[MAX];
int top;
void init(void);
int full (void);
int empty (void);
char pop (void);
void clear (void);
void push (char info);
void baca (void);
int main()
{
char pilih,khol;
printf("----Demo Operasi Single Stack----\n");
init();
do
{
printf("operasi single stack:\n");
printf("[1] PUSH\n");
printf("[2] POP\n");
printf("[3] CLEAR\n");
printf("[4] BACA\n");
printf("[5] SELESAI...\n");
printf(" Pilihan : ");scanf("%s",&pilih);
switch(pilih)
{
case '1': printf("PUSH ");scanf("%s",&khol);push(khol);break;
case '2': khol=pop();printf("POP %c\n",khol);break;
case '3': clear();break;
case '4': baca();break;
case '5': break;
default : printf("Salah pilih...\n");
}
printf("\n");
}while(pilih!='5');
}
void init(void)
{
top=0;
}
void push(char info)
{
if(full()!=true)
{ top++;
stack[top]=info; }
else printf("Stack overflow...\n");
}
char pop(void)
{
char info;
if(empty()!=true)
{ info=stack[top];
top--;
return(info);
}
else printf("Stack underflow...\n");
}
void clear(void)
{
top=0;
}
int full(void)
{
if(top==MAX) return(true);
else return(false);
}
int empty(void)
{
if(top==0) return(true);
else return(false);
}
void baca(void)
{
int i;
printf("isi stack : ");
if(top>0)
{
for(i=1;i<=top;i++)
printf("%c ",stack[i]);
}
else printf("(kosong)");
printf("\n");
}
Comments
Post a Comment