My first Magazine pemrograman-kompetitif-dasar | Page 94

8 Struktur Data Dasar Gambar 8.2: Ilustrasi penambahan dan penghapusan data pada stack Stack memiliki operasi sebagai berikut: • • • • push, yaitu memasukkan elemen baru ke bagian atas tumpukan. pop, yaitu membuang elemen paling atas tumpukan. top, yaitu mengakses elemen paling atas tumpukan. isEmpty, yaitu memeriksa apakah tumpukan saat ini kosong. 8.2.1 Aplikasi Stack Stack digunakan dalam berbagai kasus, salah satunya eksekusi fungsi pada sejumlah bahasa pemrograman. Biasanya, eksekusi fungsi terutama fungsi rekursif menggunakan struktur data stack . Pemanggilan fungsi rekursif yang menambah kedalaman berarti melakukan "push " pada stack eksekusi fungsi. Fungsi yang dieksekusi adalah fungsi di paling atas stack . Setelah fungsi di paling atas selesai, dilakukan "pop " dan eksekusi fungsi dilanjutkan ke fungsi yang ada di paling atas stack berikutnya. Oleh sebab itu, ketika pemanggilan fungsi terlalu dalam, terjadi stack overflow. Selain digunakan pada fungsi rekursi, stack juga digunakan pada kalkulator ekspresi mate- matika dalam notasi postfix. Notasi postfix adalah notasi penulisan ekspresi matematika dengan urutan operand, operand, dan operator. Contoh: • "1 2 +" bermakna "1 + 2" • "1 2 3 + −" bermakna "1 − (2 + 3)" • "1 2 3 + − 4 ×" bermakna "(1 − (2 + 3)) × 4" Notasi yang biasa kita gunakan adalah notasi infix, yaitu dengan urutan operand, operator, dan operand. Jika kita diberikan sebuah ekspresi dalam notasi postfix, nilai akhirnya dapat dicari dengan skema kerja stack sebagai berikut: • Pada awalnya, inisialisasi sebuah stack kosong. • Proses ekspresi dari kiri ke kanan: 1. Jika ditemukan operand, push ke dalam stack . 2. Jika ditemukan operator, pop dua kali untuk mendapat dua operand teratas stack , hitung, lalu push kembali ke dalam stack . • Satu-satunya nilai terakhir di dalam stack adalah hasil ekspresinya. Contoh Soal 8.1: Menghitung ekspresi postfix Anda diberikan sebagai berikut: • 1 2 3 + − 4 × 84