• Aplikasi Stack
• Queue
Aplikasi Stack:
Pengecekan Tanda Kurung
Pseudocode:
Example Case
Cek apakah string di bawah ini valid!
1. (a+b)}
2. (h-(j-(k-[l-n]))
3. {x+(y-[a+b])*c-[(d+e)]}
Notasi Infix, Postfix, Prefix
Cara penulisan operator aritmetik dan logika
Contoh infix : 2 + 2, (5 + 9) x 2 + 6 x 5
Contoh postfix : 2 2 +, 5 9 + 2 x 6 5 x +
Contoh prefix : + 2 2, + x + 5 9 2 x 6 5
Infix: urutan operasi ditentukan berdasarkan
peringkat operator terkadang perlu tanda
kurung untuk memprioritaskan operator
tertentu
Notasi Infix, Postfix, Prefix
Postfix
dan prefix tidak memerlukan tanda
kurung.
Untuk mengubah urutan operasi, urutan
operand dan operator bisa ditukar.
Contoh: Ekspresi infix 1 + 2 x 3
Postfix: 1 2 3 x +
Prefix: + 1 x 2 3
Contoh: Ekspresi infix (1 + 2) x 3
Postfix: 1 2 + 3 x
Prefix: x + 1 2 3
Postfix
Postfixadalah bentuk persamaan
matematika dimana operator ditulis
setelah kedua operannya.
Contoh :
AB+
CDE*-
FG/H+
Latihan : Ubah ke postfix
((A+B)*C – (D – E))^(F+G)
Algoritma Infix Postfix
Tambahkan tanda kurung untuk
mengelompokkan operasi.
Keluarkan operator ke sebelah kanan
tanda kurung untuk setiap kelompok satu
per satu.
Hilangkan semua tanda kurung.
Algoritma Pemrosesan Ekspresi
Postfix dengan Stack
Contoh:345*-
Langkah:
Baca tiap elemen dari depan.
Jika ditemukan operand, push ke stack
Jika ditemukan operator, pop 2 operand dari
stack, lalu operasikan 2 operand tersebut
dengan operator dan push hasil operasi ke
dalam stack
Ulangi sampai tidak ada lagi elemen yang
dapat dibaca dan isi stack kosong
Prefix
Prefix
adalah bentuk persamaan
matematika dimana operator ditulis
sebelum kedua operannya.
Contoh :
+AB
-C*DE
+/FGH
Latihan : Ubah ke prefix
((A+B)*C – (D – E))^(F+G)
Algoritma Infix Prefix
Tambahkan tanda kurung untuk
mengelompokkan operasi.
Keluarkan operator ke sebelah kiri tanda
kurung untuk setiap kelompok satu per
satu.
Hilangkan semua tanda kurung.
Algoritma Pemrosesan Ekspresi
Prefix dengan Stack
Contoh:+1*23
Langkah:
Baca tiap elemen dari belakang.
Jika ditemukan operand, push ke stack
Jika ditemukan operator, pop 2 operand dari
stack, lalu operasikan 2 operand tersebut
dengan operator dan push hasil operasi ke
dalam stack
Ulangi sampai tidak ada lagi elemen yang
dapat dibaca dan isi stack kosong
Pengecekan Palindrom
Palindrom: Teks yang jika dibaca dari depan
sama dengan jika dibaca dari belakang
Contoh:
ADA
KATAK
KODOK
LEVEL
KASUR RUSAK
TACO CAT
Algoritma Pengecekan
Palindrom dengan Stack
Langkah-langkah:
Baca teks, karakter per karakter dari array
A (array awal)
Masukkan tiap karakter yang terbaca
pada stack
Keluarkan tiap karakter dari stack,
bandingkan dengan tiap karakter dari
array A mulai dari posisi terdepan
Jika sama, maka teks adalah palindrom
Pengecekan Palindrom
dengan Stack
Code??
Queue
Definisi
Queue
Operasi-operasi dasar Queue
Insert/ enqueue
Remove/ dequeue
Contohprogram operasi dasar Queue
menggunakan array dan linked list
Queue
Sequence of items.
Items dimasukkan dari ujung belakang,
dikeluarkan dari ujung depan.
Bersifat FIFO (First In First Out).
Jenis Queue
Normal queue (single ended).
Circular queue.
DE-que (double ended).
Ex. High and low priority policy
Priority queue.
Penggunaan Queue
Waiting list – birokrasi.
Simulasi sistem antrian.
Antrian printer jobs.
Antrian proses multitasking dalam CPU.
Antrian playlist music player.
Operasi Dasar
Enqueue
Memasukkan item ke dalam queue. Masuk dari
ujung tail
Dequeue
Mengeluarkan item dari queue. Keluar dari ujung
head
Is_Full
Mengecek apakah queue penuh.
Is_Empty
Mengecek apakah queue kosong.
Initialize
Membuat queue untuk pertama kali.
Head
Mengecek elemen pertama pada queue
Basic Queue Operations
Deklarasi Class Queue
Circular queue
Method enqueue(data)
Method dequeue
Method view dan head
Linked List Implementation
Operasi enqueue identik dengan operasi
append
Operasi dequeue identik dengan operasi
extract_first
Operasi head identik dengan operasi
first
Enqueue Operation
Dequeue Operation
Linked List Implementation
???
Summary
Contoh aplikasi stack: Pengecekan tanda
kurung, notasi infix, prefix, postfix,
pengecekan palindrom
Queue dan implementasinya dalam
Array dan Linked List
Tes Praktek
Ubah ekspresi berikut:
((A+B)*C – (D – E))^(F+G)
Ke postfix (NPM Ganjil)
Ke prefix (NPM Genap)
Modifikasi
source code MyFirstQueue.cpp
agar dapat menerima antrian data
Nasabah (pada pertemuan 2)
Tunjukkan queue Anda dapat melakukan
operasi enqueue dan dequeue data
Nasabah