STACK Atau Tumpukan
Adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada TOP.
Stack karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus.Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out).
karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan.
Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka
elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita
mengambil elemen dari tumpukan, maka secara otomatis akan terambil
elemen teratas, yaitu Compo juga.
Fungsi - Fungsi STACK
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
Clear : digunakan untuk mengosongkan stack
IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
Clear : digunakan untuk mengosongkan stack
IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
1. 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.
2. IsFull berfungsi untuk memeriksa
apakah stack sudah penuh atau tidak. 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.
3. IsEmpty berfungsi untuk memeriksa
apakah stack masih kosong atau tidak. Dengan cara
memeriksa top of stack, jika masih -1 maka berarti stack masih kosong.
4. 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.
5. Pop berfungsi untuk mengambil
elemen teratas (data yang ditunjuk oleh TOS) dari stack.
Ambil dahulu
nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang
akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen
stack berkurang.
![Stack Struktur data](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY2FLjlwSMM7hghB2x2wdYCNeqbfdrCMFZzFM-0IWEawd5AnzxRbUqVBJc9O59wBbCpKHOAAISCDZAnzZ9eiUoIedkKKWzdVcAiuuW9tjul8D8nk3fynaRCKqsqTEPevEu7fc-DbPHJvg/s400/Picture6.png)