POKOK BAHASAN - 7
STACK ( TUMPUKAN )
Oleh :
NAZARUDDIN AHMAD, S.T, M.T
Stack
Stack atau tumpukan adalah suatu struktur yang
penting dalam pemrograman.
Bersifat LIFO ( Last In First Out ).
Benda yang terakhir masuk ke dalam stack akan
menjadi benda pertama yang dikeluarkan dari stack.
Ujung list disebut top.
Stack
Di mana stack ditemukan ?
Kehidupan sehari-hari: tumpukan piring kotor :
- Piring kotor terakhir diletakkan diposisi paling
atas tumpukan.
- Piring paling atas yang pertama kali dicuci.
Stack
Contoh : - Pertama, kita akan meletakkan TV
- Setelah TV kita akan meletakkan VCD
- Maka akan tersusun VCD kemudian TV
- Kemudian diatas VCD akan kita letakkan Compo
- Maka akan tersusun tumpukan TV, VCD dan Compo
Compo
Compo
VCD
TV
TV
VCD
VCD
TV
TV
Operasi-operasi/fungsi Stack
Operasi fungsi Stack
Push
Pop
Clear
IsEmpty
IsFull
Pop
Stack Exception
Eksekusi suatu operasi stack mungkin mengakibatkan
suatu kondisi error condition yang disebut exception.
Dalam Stack ADT, operasi pop dan top tidak dapat
dilakukan jika stack nya kosong.
Keterbatasan
Ukuran maksimum stack harus didefenisi diawal dan
tidak bisa diubah.
- Jika ukuran terlalu esar, pemborosan ruang memory.
- Jika ukuran terlalu kecil, dapat mengakibatan
terjadinya stack overflow.
Upaya melakukan operasi push sebuah elemen ke stack
yang penuh dapat mengakibatkan terjadinya exception.
Implementasi
Deklarasi MAX_STACK
#define MAX 10
Implementasi (lanjt)
Deklarasi / buat variabel dari struct
Stack CreateStack
{
Stack S;
S.Top = -1
return S;
}
10
Inisialisasi Stack
Pada mulanya isi top dengan -1, karena array dalam C dimulai
dari 0, yang berarti stack adalah KOSONG.
Top adalah suatu variabel penanda dalam STACK yang
menunjukkan elemen teratas STACK sekarang. Top of Stack akan
selalu bergerak hingga mencapai MAX of STACK sehingga
menyebabkan stack PENUH.
Stack CreateStack
{
Stack S;
S.Top = -1
return S;
}
11
Fungsi IsFull
Untuk memeriksa apakah stack sudah penuh ?
Dengan cara memeriksa Top of Stack, jika sudah sama dengan
MAX_STACK-1 maka full, jika belum (masih lebih kecil dari
MAX_STACK-1) maka belum full.
Int IsFull(Stack S)
{
if (S.TOP == (MAX -1))
return 1;
else
return 0;
}
12
Fungsi IsEmpty
Untuk memeriksa apakah stack masih kosong ?
Dengan cara memeriksa Top of STACK, jika masih -1 maka
berarti stack masih kosong
Int IsEmpty(Stack S)
{
if (S.TOP == -1)
return 1;
else
return 0;
}
13
Fungsi Push
Untuk memasukkan elemen ke stack, selalu menjadi elemen
teratas stack.
Tambah satu (increment) nilai Top of STACK terlebih dahulu setiap
kali ada penambahan elemen stack, asalkan stack masih belum
penuh, kemudian isikan nilai baru ke stack berdasarkan indeks
Top of Stack setelah ditambah satu (diincrement).
14
15
16
Fungsi Pop
Untuk mengambil elemen teratas dari stack.
Ambil dahulu nilai elemen teratas stack dengan mengakses top of
stack, tampilkan nilai yang akan diambil terlebih dahulu, baru
diincrement nilai Top of Stack sehingga jumlah elemen stack
berkurang.
17
18
Program Utama :
int main()
{
Stack S1;
S1 = CreateStack();
if (IsEmpty(S1))
printf( Stack Kosong );
else
printf( Stack Isi ! );
Push(&S1,2);
getch();
return 0;
}
20