STACK/TUMPUKAN - dennyari.files.wordpress.com fileSTMIK BINA NUSANTARA JAYA LUBUKLINGGAU. STACK...

Preview:

Citation preview

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;

Recommended