Anda di halaman 1dari 4

MODUL 4 - STACK KONTIGU

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

II. Dasar Teori


Tumpukan (stack) adalah tipe data yang dapat dianalogikan seperti tumpukan
kertas yang berlapis-lapis. Untuk melakukan operasi pengubahan data (push dan
pop), akses melalui ujung yang sama yang disebut dengan ujung atas tumpukan (top
of stack). Oleh karena itu operasi pada stack dikenal bersifat LIFO (Last In First Out).
Operasi dasar pada tipe data stack antara lain:
฀฀ Operasi penambahan data (push)
Data akan ditambahkan ke dalam stack sehingga data baru tersebut akan
menempati urutan paling atas dari stack.

a b
b

a a

฀฀ Operasi pengambilan data (pop)


Data teratas dalam stack akan diambil dari stack. Bila ada n data, data pada
tumpukan teratas adalah urutan ke-n, maka setelah dilakukan operasi pop data
pada urutan ke-(n-1) akan menempati urutan paling atas.

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.

III. Langkah Kerja


1. Demo
Ketiklah program di bawah ini, amati hasilnya dan pahami cara kerjanya

//file header.h
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAX_STACK 5

typedef int infotype;

typedef struct
{
infotype top;
int content[MAX_STACK];
}Stack;

void init(Stack *S);


/*
IS: input Stack
FS: Stack terinisialisasi kosong
*/

void push(Stack *S, int value);


/*
IS: input Stack, mungkin kosong, mungkin penuh
FS: satu elemen baru di-push ke stack jika masih cukup,
menampilkan peringatan jika stack penuh
*/

infotype pop(Stack *S);


/*
IS: input Stack, mungkin kosong, mungkin penuh
FS: satu elemen di-pop dari stack jika tidak kosong,
menampilkan peringatan jika stack kosong
*/

void show(Stack S);


/*
IS: input Stack, mungkin kosong, mungkin penuh
FS: seluruh elemen stack ditampilkan
*/

//file function.c
#include “header.h”

void init(Stack *S)


{
(*S).top = -1;
}

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!”);
}

infotype pop(Stack *S)


{
infotype a;
if ((*S).top > -1)
{
a=(*S).content[(*S).top];
(*S).top--;
return a;
}
else
{
printf(“\nStack kosong!”);
return 0;
}
}

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);
}

Pisahkan file program di atas menjadi 3 file antara lain:


฀฀ File header: berisi deklarasi ADT, deklarasi fungsi dengan keterangan
kondisi awal dan akhir (header.h).
฀฀ File fungsi: berisi pendefinisian fungsi-fungsi yang akan dipanggil di
program utama/main (function.c).
฀฀ File utama: yang berisi badan program utama dan pemanggilan fungsi-fungsi
yang ada dalam file fungsi (main.c).

Untuk penulisan program selanjutnya dilakukan dalam 3 file yang terpisah.

Anda mungkin juga menyukai