Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Algoritma dan Struktur Data

Presentasi serupa


Presentasi berjudul: "Algoritma dan Struktur Data"— Transcript presentasi:

1 Algoritma dan Struktur Data
Pertemuan 12 Penggunaan Stack

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

3 Matching Balancing Parenthesis
Apakah pasangan ‘(‘ dan ‘)’ pada kode berikut sudah sesuai? Tunjukkan pasangan ‘)’ dari setiap ‘(’ sum((attribut - repmat(particleElements, 1, size(attribut, 2))).^2 .* repmat(weight', 1, size(attribut, 2)), 1);

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

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

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

7 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

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

9 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 (1+2*5+1)*3=36. (1+2*(5+1))*3=39.

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

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

12 Mengubah Infix ke Postfix
Example : * *

13 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. 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.

14 Infix to Postfix Expressions
Bagaimana mengubah infix expression ke postfix expression? Gunakan stack. Baca infix expression dari kiri ke kanan. 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.

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


Download ppt "Algoritma dan Struktur Data"

Presentasi serupa


Iklan oleh Google