Pertanyaan
Ubahlah operasi hitung berikut ini ke dalam bentuk stack: matlac 3+(10ast 5) b 6ast 5-30
Solusi
Jawaban
Untuk mengubah operasi hitung ke dalam bentuk stack, kita akan menggunakan prinsip LIFO (Last-In, First-Out). Operasi akan diproses dari kanan ke kiri, dengan operator dan operand ditambahkan ke stack. Hasil perhitungan antara dua operand akan menggantikan operand tersebut di stack.**a. 3 + (10 * 5)**1. **Stack Awal:** Kosong2. **5:** `Stack: [5]`3. **10:** `Stack: [10, 5]`4. **\***: `Stack: [*]` (Operasi perkalian diambil, 10 dan 5 dikeluarkan dan dikalikan)5. **Perkalian (10 * 5 = 50):** `Stack: [50]`6. **(:** `Stack: [(, 50]` (Kurung buka ditambahkan, menandakan prioritas)7. **):** `Stack: [)]` (Kurung tutup diabaikan karena sudah diproses)8. **3:** `Stack: [3, 50]`9. **+:** `Stack: [+]` (Operasi penjumlahan diambil, 3 dan 50 dikeluarkan dan dijumlahkan)10. **Penjumlahan (3 + 50 = 53):** `Stack: [53]`**Hasil Akhir:** 53**b. 6 * 5 - 30**1. **Stack Awal:** Kosong2. **30:** `Stack: [30]`3. **-:** `Stack: [-]`4. **5:** `Stack: [5, -]`5. **6:** `Stack: [6, 5, -]`6. **\***: `Stack: [*]` (Operasi perkalian diambil, 6 dan 5 dikeluarkan dan dikalikan)7. **Perkalian (6 * 5 = 30):** `Stack: [30, -]`8. **Pengurangan (30 - 30 = 0):** `Stack: [0]`**Hasil Akhir:** 0**Catatan:** Representasi stack di atas menunjukkan isi stack pada setiap langkah. Implementasi sebenarnya dalam program akan menggunakan struktur data stack yang lebih formal. Prioritas operasi (perkalian sebelum penjumlahan/pengurangan) dijaga dengan urutan pemrosesan dan pengambilan operator dari stack.