My first Magazine pemrograman-kompetitif-dasar | Page 95
8.2 Stack
• 1 2 × 4 × 3 5 ×−
• 5 6 + 1 2 + 4 2 × −×
Carilah hasil dari setiap ekspresi yang diberikan!
Mari kita coba selesaikan ekspresi pertama dengan menggunakan stack .
1.
2.
3.
4.
5.
Pada mulanya, kita memiliki stack kosong : [].
Push angka 1 ke dalam stack . Isi stack : [1].
Push angka 2 ke dalam stack . Isi stack : [1, 2].
Push angka 3 ke dalam stack . Isi stack : [1, 2, 3].
Ditemukan operator +:
• Pop dua kali, didapat nilai 3 dan 2. Isi stack : [1].
• Operasikan 2 + 3 = 5, lalu push hasilnya. Isi stack : [1, 5]
6. Ditemukan operator -:
• Pop dua kali, didapat nilai 5 dan 1. Isi stack : [].
• Operasikan 1 - 5 = -4, dan push hasilnya. Isi stack : [-4]
7. Push angka 4 ke dalam stack . Isi stack : [-4, 4].
8. Ditemukan operator ×:
• Pop dua kali, didapat nilai 4 dan -4. Isi stack : [].
• Operasikan -4 × 4, dan push hasilnya. Isi stack : [-16]
9. Karena rangkaian ekspresi postfix sudah selesai, kita lihat angka yang ada pada stack ,
yaitu -16. Dengan demikian, 1 2 3 + − 4 × = −16.
Anda dapat mencoba menyelesaikan ekspresi-ekspresi lainnya sebagai sarana berlatih.
Aplikasi lainnya dari stack adalah sebagai struktur data yang menampung data saat melaku-
kan depth-first search. Kita akan mempelajari depth-first search pada Bab 9.
8.2.2
Implementasi Stack
Anda dapat mengimplementasikan stack menggunakan sebuah array dan variabel penunjuk.
Variabel penunjuk ini menyatakan indeks array yang menjadi elemen paling atas stack , dan
bergerak maju/mundur sesuai dengan perintah push /pop. Seluruh operasi dapat dilakukan dalam
O(1). Algoritma 41 ini merupakan pseudocode implementasi stack menggunakan array .
Algoritma 41 Implementasi stack menggunakan array .
stack ← new integer[maxSize] . Buat array global stack berukuran maxSize
procedure INITIALIZE S TACK ()
topO f Stack ← 0
4: end procedure . topO f Stack juga merupakan variabel global
1:
2:
3:
85