Definisi dan Contoh Queue

contoh queue

Apa Itu Queue?

Queue bisa disebut juga antrian pada struktur data.

Pengertian queue adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung yang disebut sisi belakang (rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain.

Contoh queue paling sederhana dapat dilihat pada tumpukan, hal ini menggunakan prinsip “masuk terakhir keluar pertama” atau “Last In First Out” (LIFO), maka pada antrian prinsip yang digunakan adalah prinsip “First In First Out” (FIFO) atau “masuk pertama keluar pertama”.

Pada queue terdapat satu pintu masuk di salah satu ujung dan satu pintu keluar di ujung lainnya. Maka ada penunjuk yang menunjukkan awal dan akhir.

Operasi penting dalam queue:

  1. Add yang berfungsi menambah sebuah elemen ke dalam antrian.
  2. Delete yang berfungsi menghapus atau mengeluarkan elemen dari antrian.

Dalam ilmu komputer, antrian atau queue banyak digunakan terutama dalam sistem operasi yang memerlukan manajemen sumber daya dan penjadwalan.

Contohnya time-sharing computer-system yang bisa dipakai oleh sejumlah orang secara serempak.

Di dalam sebuah antrian (queue), terdapat sebuah operasi bernama add_priority. Dalam hal ini, antrian tidak lagi menerapkan konsep antrian yang murni, namun berubah menjadi antrian dengan prioritas. Dimana terdapat prioritas tertentu pada elemen, dan elemen yang baru ditambah tidak mesti berada di akhir.

Operasi-Operasi Queue:

a. Create
Untuk menciptakan dan menginisialisasi Queue dengan cara membuat Head dan Tail = -1

b. IsEmpty
Dipakai untuk memeriksa penuh tidaknya sebuah antrian dengan cara memeriksa nilai tail, jika tail = -1 maka empty. Kita tidak memeriksa head, karena head adalah tanda kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah.

Pergerakan pada antrian terjadi dengan penambahan elemen antrian di bagian belakang, yaitu menggunakan nilai tail.

c. IsFull
Dipakai untuk mengecek penuh tidaknya antrian dengan cara mengecek nilai tail, jika tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) maka sudah penuh.

d. Enqueue
Digunakan untuk penambahan elemen ke dalam antrian, penambahan elemen selalu ditambahkan di elemen paling belakang. Penambahan elemen selalu menggerakan variabel tail dengan cara increment counter tail terlebih dahulu

e. Dequeue
Dipakai untuk menghapus elemen terdepan (head) dari queue dengan cara menggeser semua elemen antrian ke bagian depan dan mengurangi tail dengan 1 penggeseran yang dilakukan dengan menggunakan pengulangan.

f. Clear
Digunakan untuk menghapus elemen-elemen antrian dengan cara membuat tail dan head bernilai -1. Penghapusan elemen-elemen antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesannya menjadi -1 sehingga elemen-elemen antrian tidak lagi terbaca.

g. Tampil
Dipakai untuk menampilkan nilai-nilai elemen antrian menggunakan pengulangan dari head hingga tail.

Implementasi Queue dengan Linear Array

Linear array adalah suatu array yang seakan-akan dibuat menjadi suatu garis lurus dengan satu pintu masuk dan satu pintu keluar.

Berikut ini diberikan contoh deklarasi kelas queue Linear sebagai implementasi dari queue menggunakan linear array. Dalam prakteknya, dapat diganti sesuai dengan kebutuhan.

Data diakses dengan field data, dan indeks item pertama dan terakhir disimpan dalam field head dan tail.

Konstruktor akan menginisialisasikan nilai dari head dan tail dengan -1 untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak MAX_QUEUE yang ditunjuk oleh data.

Destruktor akan mengosongkan antrian kembali dan mendealokasikan memori yang digunakan oleh antrian.

Operasi-Operasi Queue dengan Linear Array

IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue sudah terisi atau masih kosong. hal ini dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.

IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya sama, berarti antrian sudah penuh.

EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen dalam sebuah antrian.

DeQueue
Fungsi DeQueue berfungsi untuk mengambil sebuah elemen dari antrian. Operasi ini sering disebut juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang terletak di belakangnya.

Clear
Fungsi Clear berguna untuk menghapus semua lemen dalam queue dengan jalan mengeluarkan semua elemen tersebut satu per satu hingga queue kosong dengan memanfaatkan fungsi DeQueue.

Contoh Implementasi Queue dengan Circular Array

Circular array adalah sebuah array yang dibuat menyerupai sebuah lingkaran dengan titik awal (head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih kosong. Posisi head dan tail pada gambar di atas adalah bebas asalkan saling bersebelahan.

Berikut dibagikan deklarasi kelas queue circular sebagai implementasi circular array. Dalam prakteknya, dapat diganti sesuai dengan kebutuhan.

Data diakses dengan field data, dan indeks item pertama dan terakhir disimpan dalam field head dan Tail.

Konstruktor akan menginisialisasi nilai Head dan Tail dengan 0 dan MAX-QUEUE-1 untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak MAX-QUEUE yang ditunjuk oleh Data.

Destruktur akan mengosongkan antrian kembali dan mengdealokasikan memori yang digunakan oleh antrian.

Operasi-Operasi Queue dengan Circular Array

IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue sudah terisi atau masih kosong. Hal ini dilakukan dengan mengecek apakah tail lebih besar dari head dan tail masih terletak bersebelahan dengan head. Jika benar demikian, maka queue masih kosong.

IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah tempat yang masih kosong tinggal satu atau tidak (untuk membedakan dengan empty dimana semua tempat kosong). Jika benar berarti queue penuh.

EnQueue
Fungsi EnQueue berfungsi untuk memasukkan sebuah elemen ke dalam queue tail dan head awal bernilai nol (0).

DeQueue
DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara memindahkan posisi head satu posisi ke belakang.

Contoh Soal Queue Struktur Data

Berikut adalah beberapa jawaban dari soal yang berkaitan dengan queue dalam kehidupan. Jika kamu punya soal lain, silakan berkomentar agar kita dapat sama-sama mencari jawabannya.

Berikan contoh antrian dalam kehidupan!

Antrian pada saat ke dokter. Orang yang pertama mengantri akan mendapat posisi paling depan dalam antrian. Orang yang di posisi depan maka orang itu yang pertama mendapatkan pelayanan dan/atau pengobatan

Jelaskan fungsi operasi ADD_priority!

Priority queue adalah nilai-nilai null dan kita tidak dapat membuat priority queue objek yang tidak sebanding misalnya setiap kelas tersesuai yang kita miliki menggunakan java sebanding dan komparator interface untuk menyortir objek dan prioritas antrian untuk pengolahan priority elemen itu.

Sebutkan perbedaan stack dengan array dalam queue struktur data!

Stack menggunakan LIFO atau Last In First Out (yang masuk terakhir akan keluar pertama, yang masuk pertama akan keluar terakhir) yang apabila kita mengahapus/mengeluarkan data, maka data yang terakhirlah yang akan terhapus/keluar terlebih dahulu.

Sementara array menggunakan metode FIFO atau First In First Out (yang masuk terakhir akan keluar terakhir, yang masuk pertama akan keluar pertama) yang apabila kita menghapus/mengeluarkan data, maka data yang pertamalah yang akan terhapus/keluar terdahulu.

Penutup

Sudah selesai pembahasan mengenai materi queue ini. Semoga kamu sudah memahami apa yang dimaksud dengan queue dan juga contoh queue dalam kehidupan sehari-hari.

Jika kamu memiliki pertanyaan atau pernyataan yang dapat melengkapi artikel ini, kamu bisa menggunakan kolom komentar di bawah.

Terima kasih.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

5 + six =