Definisi Stack
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In FirstOut), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.
DiC++, ada dua cara penerapan prinsip stack, yakni dengan array dan linked list.
Setidaknya stack haruslah memiliki operasi-operasi sebagai berikut:
- Push : Untuk menambahkan item pada tumpukan paling atas
- Pop : Untuk mengambil item teratas
- Clear : Untuk mengosongkan stack
- IsEmpty : Untuk memeriksa apakah stack kosong
- IsFull : Untuk memeriksa apakah stack sudah penuh
Dalam bab ini penjelasan mengenai stack akan menggunakan kelas stack. Kelima operasi stack diatas akan dideklarasikan secara abstrak dalam kelas ini, sedangkan kelas turunan dari stack akan mengimplementasikan operasi-operasi tersebut.
B. Implementasi Stack
1. Stack dengan Array
Sesuai dengan sifat stack, pengambilan / penghapusan delemen dalam stack harus dimulai dari elemen teratas.
Operasi-operasi pada Stcak dengan Array:
a. Konstruktor
Fungsi ini membuat sebuah stack baru yang masih kosong. Konsepnya adalah bahwa Top menunjukkan elemen stack teratas. Jika Top bernilai -1, berarti tumpukan kosong.
b. IsFull
Fungsi ini memeriksa apakah stack yang ada sudah penuh. Stack penuh jika stack penuh jika puncak stack terdapat tepat dibawah jumlah maksimum yang dapat ditampung stack atau dengan kata lain Top = MAX_STACK -1.
c. Push
Fungsi ini menambahkan sebuah elemen ke dalam stack dan tidak bisa dilakukan lagi jika stack sudah penuh.
d. IsEmpty
Fungsi menentukan apakah stack kosong atau tidak. Tanda bahwa stack kosong adalah Top bernilai kurang dari nol.
e. Pop
Fungsi ini mengambil elemen teratas dari stack dengan syarat stack tidak boleh kosong.
f. Clear
Fungsi ini mengosongkan stack dengan cara mengeset Top dengan -1. Jika Top bernilai kurang dari nol maka stack dianggap kosong.
Stack dengan Single Linked List
Selain implementasi stack dengan array seperti telah dijelasnkan sebelumnya, ada cara lain untuk mengimplementasi stack dalam C++, yakni dengan single linked list.Keunggulannya dibandingkan array tebtu saja adalah penggunaan alokasi memori yangdinamis sehingga menghindari pemborosan memori. Misalnya saja pada stack denganarray disediakan tempat untuk stack berisi 150 elemen, sementara ketika dipakai olehuser stack hanya diisi 50 elemen, maka telah terjadi pemborosan memori untuk sisa 100elemen, yang tak terpakai. Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack. Oleh karena itupula dalam stack dengan linked list tidak ada istilah full, sebab biasanya program tidak menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi olehpembuatnya). Namun demikian sebenarnya stack ini pun memiliki batas kapasitas,yakni dibatasi oleh jumlah memori yang tersedia.
Operasi-operasi untuk Stack dengan Linked List
Konstruktor
Fungsi ini membuat stack baru yang kosong. Stack adalah kosong jika Top tidak menunjuk apa pun (bernilai NULL).
IsEmpty
Fungsi memeriksa apakah stack yang ada masih kosong.
Push
Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip dengan inser tdalam single linked list biasa.
Pop
Fungsi ini mengeluarkan elemen teratas dari stack.
Clear
Fungsi ini akan menghapus stack yang ada.
contoh studi kasus :
1.buatlah contoh program tentang operasi single stack !
Pembahasan dan contoh program :
Output: