Latihan: Sistem Drive-Thru
Menerapkan struktur data Queue untuk menyelesaikan masalah antrean pesanan restoran, serta menambahkan operasi Peek untuk melihat data terdepan.
Menerapkan struktur data Queue untuk menyelesaikan masalah antrean pesanan restoran, serta menambahkan operasi Peek untuk melihat data terdepan.
Bayangkan Anda merancang sistem layar pemesanan Drive-Thru di sebuah restoran cepat saji. Pelanggan memesan makanan melalui mikrofon, dan pesanan tersebut akan muncul di layar dapur koki. Aturan utamanya jelas: FIFO (First-In-First-Out). Pesanan pertama yang masuk harus dimasak dan disajikan pertama kali.
Koki tidak selalu menghapus pesanan saat sudah selesai dimasak (Del). Terkadang, koki hanya ingin "mengintip" layar untuk mengetahui pesanan apa yang ada di urutan terdepan agar bisa menyiapkan bahan bakunya lebih awal. Operasi "mengintip" tanpa menghapus ini disebut Peek.
Kamu tidak perlu menulis ulang logika dasar Queue karena fungsi Add dan Del sudah disediakan. Fokuslah pada fitur untuk layar dapur:
CekPesananSelanjutnya (Operasi Peek): Fungsi ini cukup mengecek apakah antrean kosong. Jika tidak, tampilkan elemen yang berada tepat di indeks HEAD dari penunjuk array T.ProsesSemuaPesanan: Koki menekan tombol "Selesaikan Semua". Buatlah perulangan while yang terus berjalan selama antrean belum kosong. Di dalam perulangan tersebut, panggil fungsi Del untuk mencabut pesanan dari antrean, lalu cetak nama pesanannya ke layar.Program akan menampilkan log penambahan nasabah secara otomatis (simulasi), hasil pengecekan layar koki, dan proses memasak seluruh antrean hingga habis.
Program membuktikan prinsip FIFO dan kemampuan "mengintip" data tanpa menghilangkannya dari barisan.
Output:
=== SISTEM DRIVE-THRU RESTORAN ===
[Koki Mengecek Layar]
Pesanan selanjutnya: Paket Burger & Kentang
[Dapur Beraksi]
Memasak pesanan: Paket Burger & Kentang
Memasak pesanan: Ayam Goreng Spesial
Memasak pesanan: Es Krim Cokelat
Semua pesanan sudah selesai!
[Koki Mengecek Layar Lagi]
Tidak ada pesanan antre.Hint: Mengakses Data di HEAD
Untuk melihat data di posisi paling depan, kamu cukup memanggil alamat memori di indeksHEADdari arrayT. Contoh:Q->T[Q->HEAD]. Berhati-hatilah, pastikan antrean tidak kosong sebelum mencoba mengakses data tersebut!