Anda di halaman 1dari 7

3.

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.

 Operasi Pada Stack

1. Push (Menambahkan Data) Ke stack

Langkah - langkah operasi push diantaranya :

1. Memeriksa apakah tumpukan(stack) penuh


2. Jika tumpukan penuh, maka sudah tidak ada ruang untuk memasukkan data ke tumpukan,
jadi cukup tampilkan pesan bahwa tumpukan sudah penuh.
3. Jika masih ada ruang, tambahkan satu nilai pada atas(top) tumpukan untuk menunjukkan
ke ruang kosong selanjutnya
4. Menambahkan data dimana ruang kosong yang telah ditunjuk oleh top.

2. Pop (Menghapus Data ) dari stack

Langkah - langkah operasi pop diantaranya :

1. Memeriksa apakah tumpukan kosong.


2. Jika tumpukan kosong, maka sudah tidak ada lagi data untuk dihapus, maka cukup
tampilkan pesan bahwa tumpukan kosong.
3. Jika masih ada data pada tumpukan, maka akses data yang paling atas (top)
4. kemudian mengurangi nilai penunjuk top.

3. Clear : digunakan untuk mengosongkan stack


4. OperasiIsEmpty
Operasi yang digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi
ini dilakukan dengan memeriksa field top.jika top bernilai 0 atau top bernilai -1,maka
berarti stack dalam keadaan empty.
5. Operasi Is Full
Untuk memeriksa keadaan stack apakah sudah penuh/belum.
Langkah-langkah :
a) Operasi IsFull pada stack yang menggunakan array.
b) Operasi ini akan memberikan nilai true(1) jika field top sama dengan field maks_elemen
-1.

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().

 Kode Program Stack

1. Preprocessor dan Headerfile

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

Pada struct kita mendeklarasikan top untuk menunjukkan data teratas pada tumpukan


dan array data[] dengan jumlah array dari data maksimum yang telah di definisikan sebelumnya
yaitu MAX.

3. Inisialisasi Nilai top

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

Kedua fungsi ini akan digunakan untuk memeriksa apakah tumpukan


penuh isFull() (fungsi pertama) dan tumpukan kosong isEmpty(), keduanya mengembalikan nilai
boolean, jadi kita cukup mengembalikan nilai perbandingan pada fungsi masing - masing.

1. Pada fungsi isEmpty() akan mengembalikan nilai true jika nilai Tumpukan.top sama


dengan -1, atau false jika tidak sama.
2. Pada fungsi isFull() akan mengembalikan nilai true jika nilai Tumpukan.top sama dengan
maksimum data array yang telah ditentukan dikurang satu MAX-1, atau false jika tidak
sama.

5. Menambahkan Data ke 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.

6. Mengambil Data dari Tumpukan


Sebelum mengambil data, kita perlu memeriksa apakah tumpukan kosong atau tidak,
karena kita tidak dapat mengambil data yang tidak ada pada tumpukan.Jika tumpukan kosong
maka cukup tampilkan pesan bahwa tidak ada data di tumpukan tersebut.Jika masih ada data pad
tumpukan maka Tampilkan data dengan mengambil data teratas dari tumpukkan dan menghapus
data tersebut dengan mengurangi nilai top.

7. Menampilkan data pada tumpukan

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

Anda mungkin juga menyukai