STACK
Pada post kali ini saya akan membahas mengenai STACK.
Apa itu “stack” ?
Stack merupakan
suatu susunan koleksi data
dimana data dapat ditambahkan dan
dihapus melalui bagian akhir data, yang disebut dengan top of stack.
Stack bersifat LIFO (Last In First Out)
yang bererarti benda yang terakhir masuk ke dalam stack akan
menjadi yang pertama keluar dari stack.
Berikut adalah operasi
STACK :
- Inisialisasi : digunakan untuk mengosongkan stack. Yaitu mengisi nilai field top dengan 0. Contoh :
procedure inisial (var s: stack);
begin
s.top:= 0;
end;
- Push : digunakan untuk menambah item pada stack pada tumpukan paling atas. Langkah operasi PUSH adalah :
a. periksa apakah stack penuh (isFull) jika "Tidak" maka periksa apkah stack kosong (isEmpty) pada bagian ini akan ada 2 kemungkinan, jika "Ya" maka set top = 1 lalu masukkan data. Kemungkinan ke-2 jika "Tidak" maka tambahkan field top dengan 1 lalu masukkan data.
b. Periksa apakah stack penuh (isFull) "Iya" maka stack telah penuh.
Contoh operasi push:
procedure push (nim: string; nama: string; nilai: real; var s: stack);
begin
if isFull (s) = true then
begin
writeln ('stack penuh");
end
else
begin
if isEmpty (s) = true then
begin
s.top:=1;
s.data[1].nim := nim;
s.data[1].nama := nama;
s.data[1].nilai := nilai;
end
else
begin
s.top:= s.top+1;
s.data[s.top].nim := nim;
s.data[s.top].nama := nama;
s.data[s.top]. nilai := nilai;
end;
end;
end;
- Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas. Merubah nilai dari field top, jika field top tidak sama dengan 0 maka top= top-1. jika field top sama dengan 0 maka data pada stack telah habis.Contoh :
procedure pop (var s: stack);
begin
if s.top <> 0 then
begin
s.top:= s.top-1;
end
else
write ('data telah habis');
writeln;
end;
- IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong. Untuk memeriksa apakah stack dalam keadaan kosong dapat dilakukan dengan memeriksa field top. Jika field top bernilai 0, maka stack dalam keadaan empty (kosong) dan fungsi isEmpty akan mengembalikan nilai true (1). Jka top tidak bernilai 0 berarti stack ada isinya, maka nilai yang dikembalikan adalah false (0). Contoh :
function isEmpty (var s: stack) : boolean;
var
hasil: boolean;
begin
hasil:= false;
if s.top = 0 then
begin
hasil:= true;
end;
isEmpty:= hasil;
end;
- IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh. Untuk memeriksa keadaan stack apakah sudah penuh atau tidak dapat dilakukan dengan cara mengembalikan nilai true (1) jika stack telah penuh (top= maks_elm) dan mengembalkan nilai false (0) jika stack masih bisa ditambah (top<maks_elm). Contoh:
function isFull (var s: stack) : boolean;
var
hasil : boolean;
begin
hasil:= false;
if s.top = maks-elm then
begin
hasil:= true;
end;
isFull:= hasil;
end;
Untuk lebih jelasnya bisa lihat coding dibawah ini.
sumber materi : I Putu Adi Pratama slide