Stack
Pengertian Stack
Stack (tumpukan) merupakan struktur data di dalam pemrograman dan salah satu list
linear dalam struktur data yang digunakan untuk menyimpan dan mengambil data dengan konsep
LIFO (Last In First Out).Dimana dalam stack ini kumpulan data yang masuk diletakkan di atas
data yang lain. Dan berdasar konsep LIFO maka data yang terakhir kali disimpan dalam stack
akan menjadi data yang pertama kali diambil.
Dari ke 5 operasi tersebut yang merupakan Operasi utama pada stack yaitu push untuk
menambahkan data ke dalam stack dan pop untuk mengeluarkan atau menghapus data dari stack.
Program Stack
1. Untuk mengimplementasikan program stack di C++ kita membutuhkan tiga method atau
fungsi push(); untuk menambahkan data ke tumpukan, pop(); untuk me ngeluarkan data
dari tumpukan dan printStack() untuk menampilkan data yang ada di tumpukan.
2. Selain tiga fungsi tersebut, kita akan membuat dua fungsi opsional untuk mengecek
apakah tumpukan kosong isEmpty() dan tumpukan penuh isFull().
3. Untuk menyimpan data kita bisa menggunakan empty array dengan maksimum array
yang nanti akan kita definisikan sebagai maksimum tumpukan.
4. Agar data tumpukannya terstruktur kita bisa menggunakan struct sehingga lebih mudah
mengakses data top dan array datanya sendiri seperti sebuah object.
5. Karena ini adalah program konsole maka tentu kita juga akan membuat fungsi main().
Disini kita hanya menggunakan dua baris preprocessor untuk mendefinisikan header
file iostream untuk standard input/output stream dan MAX untuk maksimum data array pada
stack/tumpukan.
2. Struct data
Untuk memastikan penunjuk (top) berada pada posisi indeks ke 0 pada saat
menambahkan data ke tumpukan maka disini kita perlu memberikan nilai awal yaitu -1.
4. Memeriksa Tumpukan
Untuk menginputkan data ke tumpukan hal utama yang perlu kita lakukan adalah
memeriksa apakah tumpukan penuh atau tidak, jika penuh, maka kita tidak dapat menambahkan
data ke tumpukan karena sudah tidak ada ruang lagi yang tersedia. Jadi cukup tampilkan pesan
bahwa Tumpukannya penuh.Jika masih ada ruang maka tambahkan nilai Tumpukan.top
dengan 1. Kemudian masukkan data ke ruang yang ditunjukkan oleh top.
Sama halnya pada saat mengambil data dari tumpukan, kita juga perlu memeriksa apakah
tumpukan tersebut kosong atau tidak.Jika tidak ada data di tumpukan maka tampilkan pesan
bahwa Tumpukan kosong dan data tidak dapat di tampilkan.Jika masih ada data maka tampilkan
data satu -persatu dari tumpukan dengan menggunakan perulangan.
8. Menampilkan Menu
Setelah semua data, variabel dan fungsi selesai kita deklarasikan dan di inisialisasikan,
selanjutnya kita bisa membuat menu dengan do ... while dengan switch di dalamnya.Sebelum
menampilkan menu disini kita menampilkan data yang ada di stack menggunakan printStack(),
sehingga user dapat melihat data pada tumpukan.
Selanjunya menampilkan pilihan menu, jika user memilih pilihan pertama maka jalankan
fungsi push() dan pilihan kedua akan menjalankan fungsi pop(). Selama pilihan user tidak sama
dengan 3 yaitu pilihan ketiga maka fungsi printStack() dan menu akan terus ditampilkan. Jika
user memilih pilihan ketiga, maka while akan berhenti menampilkan menu dan aplikasi akan
ditutup.
Kelebihan stack yaitu penambahan dan penghapusan data dapat dilakukan dengan cepat,
yaitu selama memori masih tersedia penambahan data bisa terus dilakukan. Dengan
demikian tidak ada kekuatiran terjadinya stack overflow.
Kekurangan stack yaitu setiap sel tidak hanya menyimpan value saja, melainkan juga
pointer ke sel berikutnya. Hal ini menyebabkan implementasi stack memakai linked list
akan memerlukan memori yang lebih banyak daripada di implementasikan dengan array.
Setiap halaman pada linked list hanya bisa di akses dengan cara sekuensial, sehingga
lambat.
https://iqbalfadhilah.ilearning.me/2014/11/18/tugas-struktur-data-pertemuan-8/
https://bekti.net/blog/implementasi-stack-di-cpp/
https://nna-materi-alpro.blogspot.com/2019/03/stuck-tumpukan.html