STACK/TUMPUKAN
R. Denny Ari Wibowo, S.Kom
STMIK BINA NUSANTARA JAYA LUBUKLINGGAU
STACK
Penjelasan :
Sebagai tumpukan dari benda
Sekumpulan data yang seolah-olahdiletakkan di atas data yang lain
Koleksi dari objek-objek homogen
Stack adalah bersifat ‘terakhir masukpertama keluar’ atau ‘last in first out(LIFO)’.
Penghapusan serta pemasukanelemen pada stack hanya dapatdilakukan di satu posisi, yakniposisi akhir.
Posisi ini disebut puncak atautop dari stack.
ILUSTRASI
Terdapat sebuah bejana/gelas yangdimasukan sebuah kotak-kotak. Pertamaadalah kotak A dimasukan, selanjutkankotak B diletakkan di atas kotak A. Demikianjuga dengan kotak C diletakkan diatas kotakB. Hingga kotak D dimasukkan, yang beradadi kotak C.
ILUSTRASI
Seandainya nama stack di atas adalahTUMPUKAN.
Maka datanya stacknya adalah
Tumpukan [A, B, C, D].
Sehingga TOP(Tumpukan) adalah D
Banyaknya elemen stack Tumpukan pada suatusaat tertentu disebut sebagai NOEL(Tumpukan).
Jadi untuk stack di atas, NOEL(Tumpukan) = D.
DEKLARASI STACK
Dalam bahasa pemrograman, untuk menempatkanstack biasanya digunakan sebuah array. Tetapiperlu diingat di sini bahwa stack dan array adalahdua hal yang berbeda.
Misalkan suatu variabel Tumpukan adalah sebuahstack dengan 100 elemen. Diasumsikan elemenTumpukan adalah integer dan jumlah elemennyamaksimum adalah 100 elemen.
Sehingga pendeklarasiannya adalah :Var Tumpukan : Array [1..100] of Integer;
OPERASI PADA STACK
Operasi dasar yang bisa dilaksanakan
pada sebuah stack, yaitu:
Operasi Push (menyisipkan data)
memasukkan data ke dalam stack
Operasi Pop (menghapus data)
menghapus elemen yang terletak padaposisi paling atas dari sebuah stack
PUSH
Operator ini berfungsi untuk menambahkan satu elemen kedalam stack. Notasi yang digunakan adalah :
PUSH(E,Tumpukan)
Artinya : menambahkan elemen E ke dalam stackTumpukan.
Elemen yang baru masuk ini akan menempati posisi TOP.
Jadi : TOP(PUSH(E,Tumpukan)) = E.
Akibat dari operasi ini jumlah elemen dalam stack akanbertambah, artinya NOEL(Tumpukan) menjadi lebih besar.
ILUSTRASI PUSH
Sebagai awal Tumpukan masih kosong
PUSH elemen A
Diperoleh Tumpukan = [A]
PUSH elemen B,
Diperoleh Tumpukan = [A,B]
PUSH elemen C,
diperoleh Tumpukan = [A,B,C]
PUSH elemen D,
diperoleh Tumpukan = [A,B,C,D]
Operasi Push berhenti jika jumlah tumpukansudah terpenuhi (penuh)
ALGORITMA PUSH
1. Cek jumlah stack (Noel >= NoelStack).NoelStack adalah batas maksimal stacksedangkan Noel adalah posisi stack saat ini.
2. Jika penuh maka posisi Overflow (stackpenuh sehingga tidak bisa diisi data lagi).Tetapi jika tidak maka perbolehkan untukmengisi data.
3. Tambahkan Noel (Noel := Noel + 1) menjadisatu tingkat diatasnya, untuk menunjukkanbahwa posisi Noel telah bertambah.
4. Tambahkan data pada stack.
PROSEDUR PUSH
Procedure Push (Var S : Data; DataPush : Char);
Begin
If Noel = NoelStack Then
Writeln ('Isi Stack sudah penuh....kondisioverflow')
Else
Begin
Noel := Noel + 1;
S[Noel] := DataPush;
End;
End;
POP
Operator ini berfungsi untuk mengeluarkan satuelemen dari dalam stack.Notasinya :
POP(S)
Elemen yang keluar dari dalam stack adalahelemen yang berada pada posisi TOP. Akibat darioperasi ini jumlah elemen stack akan berkurangatau NOEL(Tumpukan) berkurang dan elemenpada posisi TOP akan berubah. Operator POP initidak dapat digunakan pada stack kosong
ILUSTRASI POP
Sebagai awal Tumpukan (Penuh)
POP Tumpukan = [A,B,C,D]
POP Tumpukan = [A,B,C]
POP Tumpukan = [A,B]
POP Tumpukan = [A]
ALGORITMA POP
1. Cek jumlah stack (Noel = 0), apakah posisistack sudah kosong ?
2. Jika posisi stack kosong maka posisiUnderflow (stack kosong, sehingga tidak adalagi data yang dikeluarkan). Tetapi jika tidakmaka perbolehkan untuk mengeluarkan data.
3. Kurangkan Noel (Noel := Noel - 1) menjadisatu tingkat dibawahnya, untuk menunjukkanbahwa posisi Noel telah berkurang.
PROSEDUR PUSH
Procedure Pop (Var S : Data; Var DataPop : Char);Begin
If Noel = 0 ThenWriteln ('Isi Stack sudah KOSONG....kondisiUNDERFLOW !')
ElseBegin
DataPop := S[Noel];Noel := Noel - 1;
End;End;