Gambaran besar dulu
Bayangkan kamu lagi antre beli bakso. Yang datang duluan, dapat giliran duluan. Simpel. Nah, konsep itu namanya Queue (dibaca: “kyu”) — atau dalam bahasa Indonesia, antrian.
Di dunia komputer, queue dipakai setiap kali sistem perlu memproses data secara berurutan dan adil. Prinsipnya satu: First In, First Out — atau disingkat FIFO.
Tapi sebelum masuk ke sana, kita perlu tahu dulu “saudara kembar”-nya queue yang cara kerjanya berlawanan: yaitu Stack (tumpukan). Supaya nanti kamu benar-benar paham bedanya.
Bagian 1: Stack vs Queue — bedanya di mana?
Coba bayangkan dua skenario di loket rumah sakit:
Skenario A: Petugas pakai sistem tumpukan (Stack)
Formulir pasien ditumpuk. Yang datang pertama, formulirnya paling bawah. Ketika dokter tiba dan petugas mulai memanggil, dia ambil dari tumpukan paling atas — yaitu pasien yang datang paling terakhir. Pasien yang sudah nunggu lama justru dipanggil paling akhir.
Tidak adil, kan?
Inilah yang disebut LIFO — Last In, First Out. Yang terakhir masuk, pertama keluar.
Skenario B: Petugas pakai sistem antrian (Queue)
Formulir disusun berurutan. Siapa duluan datang, formulirnya di posisi paling depan. Ketika dokter datang, petugas memanggil dari depan dulu. Pasien pertama yang datang, pertama dilayani.
Inilah FIFO — First In, First Out. Adil, sesuai harapan semua orang.
Bagian 2: Tiga operasi dasar Queue
Ada tiga hal yang bisa kamu lakukan pada sebuah queue:
-
Enqueue — menambah elemen baru di posisi paling belakang antrian. Seperti kamu datang dan berdiri di ujung antrean.
-
Dequeue — mengeluarkan elemen dari posisi paling depan antrian. Seperti pasien dipanggil dan meninggalkan antrean.
-
Front — melihat siapa yang ada di posisi paling depan, tanpa mengeluarkannya. Seperti petugas mengintip siapa giliran berikutnya.
Bagian 3: Simulasi antrian rumah sakit — langkah per langkah
Kita ikuti satu sesi pagi di loket rumah sakit. Queue awalnya kosong.
| Langkah | Kejadian | Isi Queue (depan → belakang) |
|---|---|---|
| 1 | Pasien A datang → Enqueue A | [A] |
| 2 | Pasien B datang → Enqueue B | [A, B] |
| 3 | Pasien C datang → Enqueue C | [A, B, C] |
| 4 | Dokter datang, panggil pasien → Dequeue | [B, C] — A keluar |
| 5 | Pasien D datang → Enqueue D | [B, C, D] |
| 6 | Dokter panggil lagi → Dequeue | [C, D] — B keluar |
Hasil akhir: antrian berisi [C, D]. C di depan, D di belakang.
Perhatikan: A dan B dilayani sesuai urutan kedatangan. Adil.
Bagian 4: Kalau pakai Stack, jadinya seperti apa?
Pakai skenario yang sama, tapi sekarang formulir ditumpuk dan dipanggil dari atas:
| Langkah | Kejadian | Isi Stack (bawah → atas) |
|---|---|---|
| 1 | Enqueue A | [A] |
| 2 | Enqueue B | [A, B] |
| 3 | Enqueue C | [A, B, C] |
| 4 | Pop (panggil dari atas) | [A, B] — C keluar |
| 5 | Enqueue D | [A, B, D] |
| 6 | Pop lagi | [A, B] — D keluar |
Hasilnya? C dan D dilayani lebih dulu, padahal A masih nunggu dari tadi. Pasien A — yang datang pertama — justru tidak pernah dipanggil.
Ini bukan cuma tidak adil. Di dunia nyata, ini bisa jadi masalah serius.
Bagian 5: Queue di dalam komputer — contoh nyata
Queue bukan cuma teori. Komputer pakai konsep ini setiap hari:
- Print queue — kalau kamu cetak 5 dokumen sekaligus, printer memproses satu per satu dari yang pertama dikirim.
- Message queue — pesan WhatsApp yang kamu kirim saat sinyal jelek masuk ke antrian, dikirim berurutan saat koneksi pulih.
- Task scheduler — sistem operasi mengatur proses mana yang dijalankan CPU berdasarkan urutan masuk.
- Buffer I/O — saat data dari keyboard atau kamera diproses, masuk ke buffer dulu secara berurutan sebelum dieksekusi.
Semua pakai prinsip yang sama: yang duluan masuk, duluan diproses.
Bagian 6: Jebakan yang sering bikin bingung
Ada dua kesalahan umum yang sering terjadi:
Jebakan 1 — Tertukar antara enqueue dan dequeue Enqueue itu tambah ke belakang. Dequeue itu ambil dari depan. Bukan sebaliknya. Bayangkan antrian di kasir: orang masuk dari belakang, keluar dari depan.
Jebakan 2 — Menganggap queue dan stack itu sama Bedanya ada di dua hal: posisi masuk dan posisi keluar. Stack: masuk atas, keluar atas. Queue: masuk belakang, keluar depan. Kalau bingung, ingat antrian bakso vs tumpukan piring.
Latihan: Simulasikan 10 operasi
Kerjakan urutan berikut dan tentukan isi queue di akhir:
Enqueue P
Enqueue Q
Enqueue R
Dequeue
Enqueue S
Dequeue
Enqueue T
Enqueue U
Dequeue
Enqueue V
Tulis isi queue setelah setiap langkah, lalu tuliskan isi akhirnya.
Kuis singkat
-
Apa singkatan dari FIFO, dan apa artinya dalam konteks antrian?
-
Seorang programmer menulis kode yang menambahkan data ke posisi depan antrian (bukan belakang). Apakah ini masih termasuk operasi Queue yang benar? Jelaskan.
-
Di sebuah warnet, 5 pengguna mengirim permintaan print hampir bersamaan. File pertama selesai dikirim adalah milik Budi. File terakhir milik Rani. Siapa yang berkasnya dicetak pertama oleh printer, dan konsep apa yang menjelaskan ini?