BAB 6 APLIKASI STACK - 50 - Tujuan Instruksional Umum: Struktur Data Dengan Bahasa C - 50 - BAB 6 APLIKASI STACK Tujuan Instruksional Umum: Mahasiswa memahami aplikasi STACK Tujuan Instruksional Khusus: Mahasiswa memahami aplikasi STACK dalam notasi matematika (prefix, postfix dan infix) Pokok Bahasan: Implementasi STACK dengan ekspresi matematika Notasi Prefix Notasi Postfix Notasi Infix Latihan 6.1 Aplikasi Stack Stack mempunyai aplikasi yang sangat luas di bidang komputer, salah satu aplikasi yang akan kita bahas di sini adalah penggunaan stack dalam polish notation ( notasi polish ). Sebelum dibahas tentang bagaimana penggunaan stack ini, akan disinggung terlebih dahulu tentang apakah polish notation ini. Didalam menuliskan ekspresi matematika, kita selalu mempergunakan operator dan operand. Operand adalah tanda operasi yang dipergunakan, diantaranya + (penjumlahan) , - (pengurangan), * (perkalian), / (pembagian), ^ (pangkat), dsbnya. Sedangkan operand adalah identifier yang dipergunakan sebagai symbol, misalnya alphabet a/A … z/Z. selain operator dan operand, di dalam pengerjaan ekpresi matematika harus diperhatikan juga mengenai prioritas dari operator, dengan urutan sebagai berikut: 1.() Operasi dalam tanda kurung akan dikerjakan paling awal. 2. ^ ( pangkat ) 3. * ( Perkalian dan / ( pembagian ). 4. + ( penjumlahan ) dan - ( pengurangan ). http://www.mercubuana.ac.id Bab 6 Aplikasi Stack
Struktur Data Dengan Bahasa C - 52 - Beberapa kelemahan dari notasi infix di antaranya adalah proses pengerjaan ekspresi sangat lama, diperlukan tanda kurung untuk menandai operasi yang lebih rendah prioritasnya, dan pengerjaan sangat tidak efisien. POSTFIX/ SUFFIX / REVERSE POLISH Notasi postfix atau juga disebut suffix atau reverse polish notation ( selanjutnya akan dipergunakan istilah postfix ) dapat mengatasi kelemahan dari notasi infix, di antaranya adalah tidak diperlukannya tanda kurung untuk menandai operasi yang lebih tinggi prioritasnya. Lebih cepat dan efisien karena tidak diperlukan scan dari awal ekspresi. Berikut adalah algoritma pengerjaan operasi matematika dengan notasi postfix. 1. 2. 3. 4. Scan dari kiri ke kanan sampai ketemu dengan tanda operator. Ambil 2 operand yang berada langsung di sebelah kiri dari operator tersebut. Lakukan operasi dan ganti ekspresi tersebut dengan hasil operasi. ulangi langkah 1 sampai 3 hingga keseluruhan ekspresi dilaksanakan, scan dilakukan mulai dari posisi pergantian ekspresi, jadi tidak perlu menscan dari posisi paling awal. Dengan contoh yang dikonversikan dari notasi infix , yaitu 10 15 + 20 * 200 +, maka hasil pengerjaan dengan menggunakan notasi postfix adalah sebagai berikut : 10 15 + 20* 200+ 1. 25 20*200 + 2. 25 20 *200+ 3. 500 200+ { scan ke kanan sampai ketemu tanda operator yang pertama } { ambil dua operand yang berada di kirinya, lakukan operasi terhadap kedua operand ( 10 15+) dan ganti ekspresi dengan hasil operasi}. { ambil operand ( 25 20* ) dan lakukan operasi terhadapnya} { scan lagi dari posisi tadi ke kanan untuk mencari operator berikutnya } { scan lagi dari posisi tadi ke kanan untuk mencari operator berikutnya } 4. 500 200+ { ambil kedua operand ( 500 200+) dan lakukan operasi } 5. 700 KONVERSI INFIX KE POSTFIX Setelah mengetahui keuntungan notasi postfix dibandingkan dengan notasi infix, maka pada umumnya compiler akan dipergunakan notasi postfix di dalam mengerjakan ekspresi yang ada. Permasalahannya adalah pengguna komputer ( user ) lebih menyukai dan lebih akrab dengan notasi infix dibandingkan dengan notasi postfix, oleh karena itu diperlukan algoritma yang mengkonversikan http://www.mercubuana.ac.id Bab 6 Aplikasi Stack
1. Rubahlah ke notasi prefix dan postfix a. A + B * C + D / E Struktur Data Dengan Bahasa C - 54 - Latihan 1. Rubahlah ke notasi prefix dan postfix a. A + B * C + D / E b. A * (R + (C - D)) * (E - F) + T c. (b * b – 4 * a * c) / (2 * a) 2. Buat algoritma untuk konversi dari notasi infix menjadi notasi prefix. Latihan dirumah 1. rubah ke notasi postfix dan prefix a. (a+b)c-d*e b. hj*br/l-s Referensi 1. Daniel F Stubbs & Neil W. Webre (1985). Data Structures with Abstract Data Type and Pascal. Brook/ Cole Publishing Company 2. Maria, Anna (1998), Struktur Data, Buku Ajar Universitas Bina Nusantara Jakarta. http://www.mercubuana.ac.id Bab 6 Aplikasi Stack