STACK



Pengertian Stack

Stack pada struktur data adalah sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, atau suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Stack pada struktur data dapat diilustrasikan dengan dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri N kotak. 
Dari gambar ini kita bisa mengatakan bahwa kotak B ada diatas kotak A dan ada dibawah kotak C. Gambar dibawah ini hanya menunjukkan bahwa dalam tumpukan kita hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung, yaitu ujung bagian atas.
Deklarasi Struktur Data
Stack = Record
   Isi  : array[1..n] of Tipe Data
   Atas : integer
End
 

Operasi-Operasi Pada Stack

Operasi dasar yang dilakukan Dalam Stack ada dua yaitu :
1.      Menambah Komponen (Push)
2.      Menghapus Komponen (Pop)
 
Operasi Push
Operasi Push adalah Menambah elemen kedalam stack S, dimana penambahan dapat dilakukan jika stack itu belum penuh.
Stack dikatakan penuh Jika posisi atas sudah berada pada posisi N
(If S.atas = n then stack penuh)





POP(S)
Pop(s) adalah menghapus elemen dari stack, dimana elemen yang dihapus adalah elemen yang terakhir Masuk (LIFO Last In First Out) atau elemen penghapusan, dimana proses penghapusan dapat dilakukan jika stack tidak dalam keadaan Kosong
If S.Atas > 0 then stack tidak kosong
Dimana Setiap melakukan penghapusan, maka posisi yang paling atas akan berkurang

Procedure Pop( S: Stack)

If S.atas>0 then

            Write S.isi[S.atas]

            S.Atas= S.Atas – 1

Else

Stack Kosong

Fi


Create : berfungsi untuk membuat sebuah stack baru yang masih kosong.
Spesifikasi :
Tujuan : mendefinisikan stack yang kosong
Input : stack
Syarat awal : tidak ada
Output stack : - (kosong)
Syarat akhir : stack dalam keadaan kosong
Clear : berfungsi untuk mengosongkan stack.
IsEmpty : berfungsi untuk mengecek apakah stack sudah kosong.
IsFull : berfungsi untuk mengecek apakah stack sudah penuh

Ilustrasi Stack pada kondisi Full

  • IsEmpty berfungsi untuk memeriksa apakah stack masih kosong atau tidak, dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong.
  • Push berfungsi untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang ditunjuk oleh TOS). Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan elemen stack. Asalkan stack masih belum penuh, isikan data baru ke stack berdasarkan indeks top of stack setelah diincrement sebelumnya.
  • Pop berfungsi untuk mengambil elemen teratas (data tang ditunjuk oleh TOS) dari stack. Ambil dahulu nilai element stack dengan mengakses top of stack, tampilkan nilai yang akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen stack berkurang.
  • Print berfungsi untuk menampilkan semua elemen-elemen stack dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil.
 

Comments

Post a Comment