
Queue: Pengertian, Fungsi, Jenis, Implementasi, dan Contoh Penggunaannya
Apa Itu Queue dalam Struktur Data?
Antrian (queue) merepresentasikan struktur data linear yang unik karena operasionalnya didasarkan pada mekanisme FIFO (First In, First Out), memastikan bahwa elemen yang ditambahkan pertama akan menjadi yang pertama kali diproses dan dihapus. Konsep ini sangat umum dan dapat ditemukan dalam kehidupan sehari-hari, seperti antrian di loket tiket, antrean kendaraan, dan sistem layanan pelanggan.
Dalam dunia pemrograman, queue banyak digunakan untuk mengelola proses secara berurutan, menyimpan data sementara, atau menangani permintaan pengguna secara bergantian.
Prinsip FIFO (First In, First Out)
Prinsip FIFO memastikan bahwa elemen diproses dalam urutan yang sama dengan saat mereka dimasukkan ke dalam antrian. Misalnya, jika ada tiga orang dalam antrean: A, B, dan C — maka A akan dilayani terlebih dahulu, lalu B, dan terakhir C.
Contoh analoginya:
“Bayangkan kamu mengantri di kasir supermarket. Orang pertama yang datang dan berdiri di depan akan lebih dulu dilayani, sementara yang datang belakangan harus menunggu giliran.”
Fungsi dan Kegunaan Queue
Queue digunakan di banyak aplikasi nyata dan sistem komputer, antara lain:
1. Manajemen Antrian Layanan
- Digunakan di rumah sakit, perbankan, call center, dan tempat layanan lainnya untuk mengelola giliran pengguna.
2. Penjadwalan Proses (CPU Scheduling)
- Sistem operasi menggunakan queue untuk mengelola proses yang menunggu giliran dijalankan oleh CPU.
3. Manajemen Data Jaringan
- Queue digunakan dalam router untuk menyimpan dan mengatur paket data sebelum dikirim.
4. Pencetakan Dokumen (Print Queue)
- Menyimpan urutan dokumen yang akan dicetak sesuai antrian permintaan.
5. Breadth-First Search (BFS) dalam Algoritma
- Queue digunakan untuk menjelajahi graf secara melebar (level per level).
Jenis-jenis Queue
Queue memiliki beberapa variasi berdasarkan implementasi dan penggunaannya:
A. Berdasarkan Struktur Implementasi
- Linear Queue
Elemen ditambahkan di ujung belakang dan dihapus dari depan. Masalahnya, ruang yang kosong di depan tidak bisa digunakan kembali setelah elemen dikeluarkan. - Circular Queue
Merupakan pengembangan dari linear queue. Indeks akan kembali ke awal ketika mencapai akhir array jika ada ruang kosong — efisien dalam memanfaatkan memori.
B. Berdasarkan Kegunaan Khusus
- Priority Queue
Elemen dalam antrian memiliki prioritas. Elemen dengan prioritas tertinggi akan dilayani lebih dulu, meskipun ia masuk belakangan. - Double-Ended Queue (Deque)
Queue ini menawarkan fleksibilitas yang lebih besar karena memungkinkan penambahan dan penghapusan elemen baik dari ujung depan maupun belakang.
Implementasi Queue
1. Menggunakan Array
- Queue diatur menggunakan indeks array.
- Sederhana dan cepat, tetapi kapasitas tetap (statis).
- Rentan terhadap pemborosan ruang jika elemen hanya dihapus dari depan.
2. Menggunakan Linked List
- Elemen queue dibentuk dari node-node yang terhubung.
- Dinamis, tidak terikat ukuran tetap.
- Lebih efisien untuk operasi penambahan dan penghapusan.
- Menggunakan lebih banyak memori karena menyimpan pointer.
3. Menggunakan Library atau Modul Bahasa Pemrograman
Sebagian besar bahasa pemrograman sudah menyediakan struktur queue bawaan:
- Python:
collections.deque
,queue.Queue
- Java:
java.util.Queue
- C++:
std::queue
,std::priority_queue
- JavaScript: Menggunakan array dengan
push()
danshift()
Keuntungan dan Kekurangan Queue
Keuntungan
- Manajemen Waktu yang Baik: FIFO menjamin keadilan dalam pemrosesan data.
- Sederhana dan Mudah Diimplementasikan
- Efisien untuk Proses Berurutan: Cocok untuk layanan atau sistem yang bersifat berbaris.
Kekurangan
- Akses Terbatas: Hanya elemen depan dan belakang yang bisa diakses langsung.
- Pemborosan Ruang (pada Linear Queue): Slot kosong di depan tidak bisa dipakai ulang kecuali dengan circular queue.
- Tidak Cocok untuk Proses Random Access
Perbedaan Queue dan Stack
Aspek | Queue (Antrian) | Stack (Tumpukan) |
---|---|---|
Prinsip | FIFO (First In, First Out) | LIFO (Last In, First Out) |
Operasi Tambah/Hapus | Belakang dan Depan | Satu ujung (Top) |
Contoh Nyata | Antrian loket | Tumpukan piring di rak |
Akses Elemen | Hanya depan & belakang | Hanya dari atas (top) |
Contoh Penggunaan Queue dalam Dunia Nyata
- Sistem Operasi: Scheduler CPU menggunakan queue untuk menangani proses yang menunggu giliran eksekusi.
- Jaringan Komputer: Paket data disimpan dalam queue sebelum dikirim ke tujuan.
- Pemrosesan Pesan: Sistem messaging seperti Kafka atau RabbitMQ menggunakan queue untuk menyimpan dan memproses antrian pesan.
- Customer Support: Antrean pengguna yang menghubungi layanan pelanggan dikelola dengan queue.
- Multithreading: Queue digunakan untuk berbagi data antara proses/threads agar tidak bentrok (thread-safe queue).
Tips Belajar dan Praktik Queue
- Latih penggunaan queue dalam berbagai bahasa pemrograman.
- Buat simulasi antrian pelanggan atau antrian tugas menggunakan program kecil.
- Pelajari variasi lainnya seperti priority queue atau deque.
- Gunakan visualisasi online (misal: VisuAlgo) untuk memahami bagaimana queue bekerja secara animasi.
Kesimpulan
Queue adalah struktur data penting dalam pengembangan perangkat lunak modern. Dengan prinsip FIFO, queue menjamin elemen diproses secara berurutan dan adil. Jenis-jenis queue seperti linear, circular, priority queue, dan deque dapat dipilih sesuai kebutuhan aplikasi.
Pemahaman dan penerapan queue sangat berguna, terutama dalam sistem real-time, layanan pelanggan, pengelolaan proses, dan berbagai algoritma pencarian. Walaupun memiliki beberapa keterbatasan, manfaatnya dalam efisiensi dan pengelolaan urutan menjadikannya salah satu fondasi penting dalam struktur data.
Referensi
- Knuth, D. E. (2011). The Art of Computer Programming, Volume 1: Fundamental Algorithms. Addison-Wesley.
- Weiss, M. A. (2013). Data Structures and Algorithm Analysis in C. Addison-Wesley.
- Sedgewick, R., & Wayne, K. (2011). Algorithms (4th Edition). Addison-Wesley.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press.
- Goodrich, M. T., & Tamassia, R. (2010). Data Structures and Algorithms in Java (5th ed.). Wiley.
Penulis : Sidiq Abdul Rahman, Noval Abdurramadan | Direktorat Pusat Teknologi Informasi