Pernahkah kamu penasaran bagaimana sistem notifikasi di aplikasi yang kamu gunakan bekerja di balik layar? Dalam banyak aplikasi, pesan atau notifikasi sering kali harus diantrekan dan diurutkan sesuai dengan urutan kirim atau prioritas. Proses tersebut umumnya menggunakan struktur data queue. Dalam artikel ini, kita akan membahas apa itu queue beserta dengan contoh sederhana penerapannya.
Queue atau dalam bahasa Indonesia yang berarti antrean adalah struktur data yang menyusun elemen-elemen data dalam urutan linier. Prinsip dasar dari struktur data ini adalah “First In, First Out” (FIFO) yang berarti elemen data yang pertama dimasukkan ke dalam antrean akan menjadi yang pertama pula untuk dikeluarkan.
Caranya bekerja adalah seperti jejeran orang yang sedang menunggu antrean di supermarket di mana orang pertama yang datang adalah yang pertama dilayani (First In, First Out). Pada struktur data ini, urutan pertama (data yang akan dikeluarkan) disebut Front atau Head. Sebaliknya, data pada urutan terakhir (data yang baru saja ditambahkan) disebut Back, Rear, atau Tail. Proses untuk menambahkan data pada antrean disebut dengan Enqueue, sedangkan proses untuk menghapus data dari antrean disebut dengan Dequeue.
Queue memiliki peran yang penting dalam berbagai aplikasi dan algoritma. Salah satu fungsi utamanya adalah mengatur dan mengelola antrean tugas atau operasi secara efisien. Dalam sistem komputasi, ia digunakan untuk menangani tugas-tugas seperti penjadwalan proses, antrean pesan, dan manajemen sumber daya.
Jenis struktur data ini dapat diklasifikasikan berdasarkan cara implementasinya, maupun berdasarkan penggunaannya. Di antara jenis-jenis tersebut adalah sebagai berikut.
Elemen-elemen data disusun dalam barisan linear dan penambahan serta penghapusan elemen hanya terjadi pada dua ujung barisan tersebut.
Mirip dengan jenis linear, tetapi ujung-ujung barisan terhubung satu sama lain, menciptakan struktur antrean yang berputar.
Setiap elemen memiliki prioritas tertentu. Elemen dengan prioritas tertinggi akan diambil terlebih dahulu.
Elemen dapat ditambahkan atau dihapus dari kedua ujung antrean.
Meskipun struktur data queue memiliki banyak kegunaan, kamu juga harus mengetahui beberapa keuntungan dan keterbatasan yang perlu diperhatikan sebelum menggunakannya.
Data berjumlah besar dapat dikelola dengan mudah dan efisien.
Proses insert dan delete data dapat dilakukan dengan mudah karena mengikuti aturan first in first out (FIFO).
Efisien dalam menangani tugas berdasarkan urutan kedatangan.
Tidak efisien untuk pencarian elemen tertentu dalam antrean.
Memerlukan alokasi memori yang cukup untuk menyimpan antrean.
Secara umum, struktur data queue memiliki 2 operasi utama, yaitu enqueue dan dequeue. Namun, ada beberapa struktur data abstrak lainnya yang dapat terjadi pada operasi tersebut, diantaranya adalah :
untuk menambahkan elemen ke akhir antrian
untuk menghapus elemen dari depan antrian
untuk memeriksa ada tidaknya antrian kosong
untuk memeriksa kepenuhan antrian
untuk mendaptkan nilai bagian depan antrian tanpa menghapusnya
untuk membuat antrian baru tanpa elemen data
Beberapa fungsi umum dari struktur data queue adalah sebagai berikut, yaitu :
Struktur data queue dapat anda lihat terapannya pada kehidupan sehari-hari, misalnya saat melakukan pembelian tiket kereta api, tiket bioskop, tiket kapal laut, pembayaran listrik, pembayaran air, dan sebagainya. Misalnya saja dalam pembelian tiket di bioskop, dimana :
Pemahaman tentang struktur data queue menjadi kunci untuk mengoptimalkan efisiensi dan kinerja aplikasi. Artikel ini telah menjelaskan bahwa ia adalah struktur data yang mengatur elemen-elemen data dengan prinsip “First In, First Out” (FIFO), serupa dengan antrean di kehidupan sehari-hari. Kita juga telah mempelajari fungsi, jenis-jenis, beserta kekurangan dan kelebihannya.
Kita juga telah melihat contoh implementasi sederhananya, memperlihatkan bagaimana struktur data ini dapat digunakan dalam konteks antrean pelanggan pada kasir. Dengan pemahaman ini, semoga kamu dapat mengimplementasikan konsep struktur data yang tepat dalam proyek-proyek aplikasi yang kamu kembangkan sehingga dapat meningkatkan efisiensi aplikasi dan juga menjadi seorang Software Engineer yang lebih andal.