Queue dalam Struktur Data: Pengertian, Jenis, Fungsi, Cara Kerja, dan Contohnya

Dalam kehidupan sehari-hari, kita sering menjumpai sistem antrian, seperti saat menunggu giliran di kasir supermarket, membeli tiket bioskop, atau mencetak dokumen menggunakan printer. Orang yang datang lebih dulu akan dilayani lebih dulu, sedangkan yang datang belakangan harus menunggu giliran.

Konsep tersebut juga digunakan dalam dunia pemrograman melalui queue dalam struktur data. Queue menjadi salah satu struktur data yang sangat penting karena mampu mengelola data secara teratur berdasarkan urutan kedatangan. Struktur data ini banyak digunakan pada sistem operasi, aplikasi perpesanan, server, hingga berbagai aplikasi berbasis web.

Pada artikel ini, Anda akan mempelajari pengertian queue, fungsi, cara kerja, jenis-jenis queue, operasi dasar, contoh implementasi, serta penerapannya dalam kehidupan sehari-hari.

Apa Itu Queue dalam Struktur Data?

Queue adalah struktur data linear yang bekerja menggunakan prinsip FIFO (First In, First Out). Artinya, data yang pertama kali masuk ke dalam queue akan menjadi data pertama yang keluar.

Prinsip ini sama seperti antrean di loket pelayanan. Orang yang datang terlebih dahulu akan mendapatkan layanan lebih dulu, sedangkan orang berikutnya harus menunggu hingga gilirannya tiba.

Ilustrasi sederhana:

Masuk:
A → B → C → D

Keluar:
A → B → C → D

Dengan konsep FIFO, queue sangat cocok digunakan untuk menangani proses yang harus berjalan secara berurutan.

Mengapa Queue Penting dalam Pemrograman?

Queue digunakan untuk memastikan bahwa setiap data diproses sesuai urutan masuknya. Hal ini sangat penting pada aplikasi yang menangani banyak permintaan secara bersamaan.

Beberapa manfaat menggunakan queue antara lain:

  • Mengatur proses secara berurutan.
  • Menghindari konflik saat banyak data diproses.
  • Mempermudah pengelolaan antrean.
  • Membantu meningkatkan efisiensi sistem.
  • Memastikan setiap permintaan mendapatkan giliran.

Karena alasan tersebut, queue menjadi salah satu struktur data yang sering digunakan dalam pengembangan perangkat lunak.

Cara Kerja Queue

Queue memiliki dua posisi utama, yaitu:

  • Front → posisi data paling depan yang akan diproses terlebih dahulu.
  • Rear → posisi data paling belakang tempat data baru ditambahkan.

Misalnya terdapat antrean berikut:

Front

A → B → C → D

              Rear

Jika data baru E masuk, maka hasilnya menjadi:

Front

A → B → C → D → E

                  Rear

Kemudian ketika satu data diproses, elemen A akan keluar terlebih dahulu.

Hasilnya:

Front

B → C → D → E

            Rear

Proses tersebut akan terus berulang hingga antrean kosong.

Operasi Dasar Queue

Dalam queue terdapat beberapa operasi utama.

1. Enqueue

Enqueue digunakan untuk menambahkan data ke bagian belakang antrean.

Contoh:

Sebelum:

A → B → C

Enqueue D

A → B → C → D

2. Dequeue

Dequeue digunakan untuk mengambil atau menghapus data paling depan.

Contoh:

Sebelum:

A → B → C

Dequeue

B → C

3. Peek (Front)

Digunakan untuk melihat data paling depan tanpa menghapusnya.

Contoh hasil:

A

4. Rear

Digunakan untuk melihat data terakhir dalam antrean.

Contoh hasil:

D

5. IsEmpty

Memeriksa apakah queue masih memiliki data atau sudah kosong.

6. IsFull

Digunakan pada queue dengan ukuran tetap untuk mengecek apakah kapasitas sudah penuh.

Jenis-Jenis Queue

Selain queue biasa, terdapat beberapa jenis queue yang sering digunakan dalam pemrograman.

1. Simple Queue

Simple Queue merupakan bentuk queue paling sederhana.

Karakteristiknya:

  • Penambahan data dilakukan di belakang.
  • Penghapusan dilakukan di depan.

Contoh:

A → B → C → D

2. Circular Queue

Circular Queue memanfaatkan ruang kosong yang tersedia dengan menghubungkan posisi terakhir kembali ke posisi awal.

Ilustrasi:

1 → 2 → 3 → 4
↑           ↓
← ← ← ← ← ←

Keunggulan Circular Queue adalah penggunaan memori yang lebih efisien dibandingkan Simple Queue.

3. Priority Queue

Pada Priority Queue, data diproses berdasarkan tingkat prioritas, bukan berdasarkan waktu kedatangan.

Contoh:

DataPrioritas
ARendah
BTinggi
CSedang

Urutan pemrosesan:

B → C → A

Priority Queue banyak digunakan pada sistem operasi dan penjadwalan proses.

4. Double Ended Queue (Deque)

Deque memungkinkan proses penambahan maupun penghapusan data dari kedua sisi antrean.

Ilustrasi:

← A → B → C →

Deque lebih fleksibel dibandingkan queue biasa.

Implementasi Queue Menggunakan Array

Queue dapat dibuat menggunakan array.

Contoh sederhana pada PHP:

<?php

$queue = [];

array_push($queue, "Andi");
array_push($queue, "Budi");
array_push($queue, "Citra");

print_r($queue);

?>

Output:

Array
(
    [0] => Andi
    [1] => Budi
    [2] => Citra
)

Contoh Dequeue pada PHP

<?php

$queue = ["Andi", "Budi", "Citra"];

array_shift($queue);

print_r($queue);

?>

Output:

Array
(
    [0] => Budi
    [1] => Citra
)

Contoh Queue pada Python

from collections import deque

queue = deque()

queue.append("Andi")
queue.append("Budi")
queue.append("Citra")

print(queue)

queue.popleft()

print(queue)

Contoh Queue pada JavaScript

let queue = [];

queue.push("Andi");
queue.push("Budi");
queue.push("Citra");

console.log(queue);

queue.shift();

console.log(queue);

Penerapan Queue dalam Kehidupan Sehari-hari

Queue tidak hanya digunakan dalam pemrograman, tetapi juga dalam berbagai aktivitas sehari-hari.

Beberapa contohnya antara lain:

1. Antrean Kasir

Pelanggan yang datang lebih dulu akan dilayani lebih dulu.

2. Printer

Dokumen yang dikirim pertama akan dicetak lebih dahulu.

3. Sistem Tiket

Nomor antrean dipanggil sesuai urutan kedatangan.

4. Customer Service

Setiap pelanggan mendapatkan giliran sesuai urutan antrean.

5. Buffer Streaming

Data video diproses secara berurutan agar pemutaran tetap lancar.

6. Sistem Operasi

Queue digunakan untuk mengatur proses yang menunggu giliran menggunakan CPU.

Kelebihan Queue

Beberapa keuntungan menggunakan queue adalah:

  • Mudah diimplementasikan.
  • Menjamin urutan pemrosesan data.
  • Cocok untuk sistem antrean.
  • Mengurangi konflik saat banyak proses berjalan bersamaan.
  • Efisien untuk penjadwalan tugas.

Kekurangan Queue

Di balik kelebihannya, queue juga memiliki beberapa keterbatasan.

  • Tidak dapat mengakses elemen di tengah secara langsung.
  • Pada Simple Queue dapat terjadi pemborosan ruang jika tidak menggunakan Circular Queue.
  • Kurang cocok untuk pencarian data secara acak.

Perbedaan Queue dan Stack

Banyak pemula masih bingung membedakan queue dan stack.

Berikut perbandingannya.

QueueStack
FIFO (First In First Out)LIFO (Last In First Out)
Data pertama keluar lebih dahuluData terakhir keluar lebih dahulu
Enqueue dan DequeuePush dan Pop
Digunakan pada antreanDigunakan pada Undo dan Call Stack

Memahami perbedaan ini akan membantu Anda memilih struktur data yang sesuai dengan kebutuhan aplikasi.

Tips Belajar Queue

Agar lebih mudah memahami queue, lakukan beberapa langkah berikut.

  • Kuasai konsep FIFO terlebih dahulu.
  • Latih implementasi queue menggunakan array maupun linked list.
  • Pelajari perbedaan Simple Queue dan Circular Queue.
  • Cobalah membuat simulasi antrean kasir atau printer.
  • Pelajari penerapan queue pada algoritma Breadth First Search (BFS).

Latihan secara konsisten akan membuat Anda lebih cepat menguasai konsep queue.

Kesimpulan

Queue dalam struktur data adalah struktur data linear yang bekerja menggunakan prinsip FIFO (First In, First Out), yaitu data yang masuk lebih dulu akan diproses lebih dulu. Konsep ini sangat cocok untuk menangani berbagai sistem antrean, baik dalam kehidupan sehari-hari maupun dalam pengembangan perangkat lunak.

Dengan memahami jenis-jenis queue, operasi dasar seperti enqueue dan dequeue, serta contoh implementasinya dalam berbagai bahasa pemrograman, Anda dapat membangun aplikasi yang lebih teratur, efisien, dan mudah dikelola.

FAQ

1. Apa yang dimaksud dengan queue dalam struktur data?

Queue adalah struktur data linear yang menerapkan prinsip FIFO (First In, First Out), di mana data pertama yang masuk akan menjadi data pertama yang keluar.

2. Apa fungsi queue dalam pemrograman?

Queue digunakan untuk mengelola data yang harus diproses secara berurutan, seperti antrean printer, penjadwalan proses, dan sistem tiket.

3. Apa perbedaan queue dan stack?

Queue menggunakan prinsip FIFO, sedangkan stack menggunakan prinsip LIFO (Last In, First Out).

4. Apa itu enqueue dan dequeue?

Enqueue adalah operasi untuk menambahkan data ke bagian belakang antrean, sedangkan dequeue adalah operasi untuk mengambil atau menghapus data dari bagian depan antrean.

5. Di mana queue sering digunakan?

Queue banyak digunakan pada sistem operasi, aplikasi perpesanan, server, buffer streaming, printer, sistem tiket, hingga algoritma Breadth First Search (BFS).

Leave a Reply

Your email address will not be published. Required fields are marked *