Algoritma dan Struktur Data Pertemuan 12 Penggunaan Stack

  • Slides: 15
Download presentation
Algoritma dan Struktur Data Pertemuan 12 Penggunaan Stack

Algoritma dan Struktur Data Pertemuan 12 Penggunaan Stack

Penggunaan Stack • Matching Balancing Parenthesis • Mengevaluasi ekspresi postfix • Mengubah Infix ke

Penggunaan Stack • Matching Balancing Parenthesis • Mengevaluasi ekspresi postfix • Mengubah Infix ke postfix

Matching Balancing Parenthesis • Apakah pasangan ‘(‘ dan ‘)’ pada kode berikut sudah sesuai?

Matching Balancing Parenthesis • Apakah pasangan ‘(‘ dan ‘)’ pada kode berikut sudah sesuai? • Tunjukkan pasangan ‘)’ dari setiap ‘(’ - repmat(particle. Elements, 1, size(attribut, 2))). ^2. * repmat(weight', 1, size(attribu

Matching Balancing Parenthesis • Memeriksa sintaks yang terdiri atas ‘(‘ dan ‘)’. Sebuah ‘(‘

Matching Balancing Parenthesis • Memeriksa sintaks yang terdiri atas ‘(‘ dan ‘)’. Sebuah ‘(‘ harus berpasangan dengan ‘)’, jika tidak maka illegal. • ( )( ), ( ( ( ) ) legal ( ( ) (, ) ( ilegal • Apakah menghitung banyaknya ‘(‘ dan ‘)’ cukup?

Matching Balancing Parenthesis • Insights sintaks dibaca dari kiri ke kanan. Sebuah ‘)’ dicocokkan

Matching Balancing Parenthesis • Insights sintaks dibaca dari kiri ke kanan. Sebuah ‘)’ dicocokkan dengan ‘(‘ sebelah kiri terdekat yang tidak memiliki pasangan • Contoh : ((())())

Matching Balancing Parenthesis • Misalnya kita memiliki sebuah ‘)’. Bagaimana kita mengetahui ‘(’ sebelah

Matching Balancing Parenthesis • Misalnya kita memiliki sebuah ‘)’. Bagaimana kita mengetahui ‘(’ sebelah kiri terdekat dan belum punya pasangan?

Matching Balancing Parenthesis – Jika ekspresi dibaca dari kiri ke kanan, MOST RECENTLY UNMATCHED

Matching Balancing Parenthesis – Jika ekspresi dibaca dari kiri ke kanan, MOST RECENTLY UNMATCHED ‘(’ is cancelled dengan ‘)’. – Bagaimana menyimpan MOST RECENTLY READ (LAST) ‘(’ ? (Masalah : masih banyak ‘(’ yang menunggu pasangan. • Struktur data apa yang dapat mencatat item ‘(‘ terakhir yang tidak memiliki pasangan ? Stack LIFO structure

Matching Balancing Parenthesis • Ketika menemui ‘(‘, push ke stack. • Ketika menemui ‘)’,

Matching Balancing Parenthesis • Ketika menemui ‘(‘, push ke stack. • Ketika menemui ‘)’, pop ‘(‘ dari stack. ‘(‘ berpasangan dengan ‘)’. – Bagaimana jika stack empty ketika menemui ‘)’? • Bagaimana jika seluruh ekspresi selesai dibaca namun stack tidak kosong?

Mengubah Infix ke Postfix • Infix expression – Misalnya Sebuah persamaan hanya memiliki ‘*’

Mengubah Infix ke Postfix • Infix expression – Misalnya Sebuah persamaan hanya memiliki ‘*’ dan ‘+’. ‘*’ memiliki higher precedence dari ‘+’. – 5+2+3 = 10, 1+2*4=9, etc. – Persamaan juga dapat memiliki parenthesis, i. e. , (1+2)*4=12 2. (1+2*5+1)*3=36. 3. (1+2*(5+1))*3=39. 1.

Mengubah Infix ke Postfix • Postfix expression 13+ 2. 1 2 4 * +

Mengubah Infix ke Postfix • Postfix expression 13+ 2. 1 2 4 * + 3. 1 2 + 4 * 4. 6 5 2 3 + 8 * + 3 + * 1. • Tidak ada ‘(‘, ‘)’ pada ekspresi postfix. • Untuk mengevaluasi postfix kita membutuhkan stack.

Mengubah Infix ke Postfix • Mengevaluasi postfix expression. Baca persamaan dari kiri ke kanan.

Mengubah Infix ke Postfix • Mengevaluasi postfix expression. Baca persamaan dari kiri ke kanan. 2. Ketika bertemu bilangan, push ke stack. 1. 3. Ketika bertemu operator, pop dua bilangan dari stack. Hasilnya di push kembali ke stack.

Mengubah Infix ke Postfix • Example : 6 5 2 3 + 8 *

Mengubah Infix ke Postfix • Example : 6 5 2 3 + 8 * + 3 + *

Infix to Postfix Expressions • Bagaimana mengubah infix expression ke postfix expression? Gunakan stack.

Infix to Postfix Expressions • Bagaimana mengubah infix expression ke postfix expression? Gunakan stack. Baca infix expression dari kiri ke kanan. Ketika bertemu operand (bilangan), ditulis. 2. Jika bertemu operator, pop stack (dan tuliskan hasil popnya) sampai operator yang memiliki lower precedence atau ‘(‘ berada di top stack. Kemudian push operator tersebut ke stack. 1.

 • Infix to Postfix Expressions Bagaimana mengubah infix expression ke postfix expression? Gunakan

• Infix to Postfix Expressions Bagaimana mengubah infix expression ke postfix expression? Gunakan stack. Baca infix expression dari kiri ke kanan. 3. 4. 5. Jika bertemu ‘(‘, push ke stack. Jika bertemu ‘)‘, pop stack dan tuliskan hasilnya sampai bertemu ‘(’. Kemudian poplah ‘(’ (jangan ditulis). Jika ekspresi telah berakhir, pop stack (dan tulis hasilnya) hingga stack kosong.

Infix to Postfix Expressions • Example : (1+2*(5+1))*3 postfix expression 1 2 5 1

Infix to Postfix Expressions • Example : (1+2*(5+1))*3 postfix expression 1 2 5 1 + * + 3 *