I. Tujuan
1. Memahami konsep stack dan penggunaan array sebagai stack
2. Memahami operasi-operasi dasar stack
3. Mampu mengembangkan penggunaan stack dalam bahasa C
a b
b
a a
b a
Pada modul ini akan digunakan array untuk mengimplementasikan stack, dimana
jumlah elemen array ditentukan pada awal program dan tidak dapat ditambah maupun
dikurangi di tengah program (array statis).
Dengan bentuk array yang statis maka dapat terjadi kemungkinan stack penuh
atau stack kosong. Bila stack penuh tidak dapat dikenakan operasi penambahan data
(push), dan bila stack kosong maka operasi pengambilan data (pop) tidak dapat
dilakukan. Untuk mengatasi kedua situasi tersebut, diperlukan pengecekan kondisi
dari stack setiap akan dikenai operasi.
1
Sehingga jika hasil pemerikasaan dihasilkan bahwa stack dalam keadaan penuh
maka proses push tidak boleh dilakukan. Begitu pula jika stack dalam keadaan
kosong maka proses pop tidak boleh dilakukan.
//file header.h
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAX_STACK 5
typedef struct
{
infotype top;
int content[MAX_STACK];
}Stack;
//file function.c
#include “header.h”
2
void push(Stack *S, infotype value)
{
if ((*S).top < (MAX_STACK – 1))
{
(*S).top++;
(*S).content[(*S).top] = value;
}
else
printf(“\nStack sudah penuh!”);
}
void show(Stack S)
{
if (S.top > -1)
{
while (S.top != -1)
{
printf(“\n %d”, S.content[S.top]);
S.top--;
}
}
else
printf(“\nStack kosong!”);
}
//file main.c
#include “header.h”
void main()
{
Stack myStack;
char pilih,a;
infotype newVal;
init(&myStack);
do
{
system(“cls”);
printf(“\n---------- M E N U ---------“);
printf(“\n1. Push”);
3
printf(“\n2. Pop”); printf(“\n3.
Show All”); printf(“\n\nMasukkan
pilihan: “); pilih = getch();
switch(pilih)
{
case „1‟:
printf(“\nMasukkan nilai yang akan di-push: “);
scanf(“%d”, &newVal);
push(&myStack,newVal);
getch();
break;
case „2‟:
a=pop(&myStack);
printf(“\nNilai yang di-pop dari stack: %d”,a);
getch();
break;
case „3‟:
show(myStack);
getch();
break;
}
}while (pilih != 27);
}