Pengertian Queue
Queue (Antrian)
adalah suatu kumpulan data yang mana penambahan data / elemen hanya dapat
dilakukan pada sisi belakang sedangkan penghapusan / pengeluaran elemen
dilakukan pada sisi depan. Jenis struktur data antrian sering digunakan untuk
menstimulasikan keadaan dunia nyata. Antrian banyak dijumpai dalam kehidupan
sehari-hari. Misal : antrian registrasi mahasiswa, tiket kereta api dan
lain-lain. Berbeda dengan stack, prinsip yang digunakan dalam antrian adalah
FIFO ( First In First Out ). Dengan kata lain, urutan keluar elemen akan sama
dengan urutan masuknya.
Deklarasi queue dalam program
Sebuah queue di dalam
program komputer dideklarasikan sebagai sebuah tipe bentukan baru, di dalam
Bahasa C, biasa disebut struct. Sebuah struktur data dari sebuah queue
setidaknya harus mengandung dua tiga variabel, yakni variabel HEAD yang
akan berguna sebagai penanda bagian depan antrian, variabel TAIL yang
akan berguna sebagai penanda bagian belakang antrian dan ARRAY DATA dari
yang akan menyimpan data-data yang dimasukkan ke dalam queue tersebut.
Berikut adalah syntax untuk mendeklarasikan struktur data dari sebuah queue
menggunakan Bahasa C:
typedef struct
{
int HEAD, TAIL;
int data[max+1];
}Queue;
sebuah queue didefinisikan
dengan array berukuran MAX + 1, maksudnya adalah agar elemen array ke-0
tidak digunakan untuk menyimpan data, melainkan hanya sebagai tempat „singgah‟
sementara untuk variabel HEAD dan TAIL. Sehingga, jika HEAD dan TAIL berada pada
elemen array ke-0, berarti queue tersebut dalam kondisi kosong
(tidak ada data yang disimpan). Berikut adalah ilustrasi dari sebuah queue kosong
dengan ukuran nilai MAX = 8:
Operasi-operasi dasar dalam queue
Pada dasarnya, operasi-operasi
dasar pada queue mirip dengan operasi-operasi dasar pada stack.
Perbedaannya hanya pada prosedur push dan pop saja. Pada queue, prosedur
yang berfungsi untuk memasukkan data/ nilai ke dalam antrian adalah enqueue,
sedangkan prosedur untuk mengeluarkan data/ nilai dari antrian adalah dequeue.
Contoh beberapa program dalam
queue
a. Prosedur createEmpty
Sama pada stack, prosedur
ini berfungsi untuk mengosongkan queue dengan cara meletakkan HEAD dan
TAIL pada indeks array ke-0. Berikut deklarasi prosedur createEmpty pada
queue dalam Bahasa C:
void createEmpty()
{
antrian.HEAD = 0;
antrian.TAIL = 0;
}
b. Prosedur enqueue
Prosedur ini digunakan untuk memasukkan
sebuah data/ nilai ke dalam queue. Sebelum sebuah data/ nilai
dimasukkan ke dalam queue, maka prosedur ini terlebih dahulu melakukan
pengecekan terhadap posisi HEAD dan TAIL. Jika posisi HEAD dan TAIL masih
berada pada indeks ke-0 (artinya queue masih kosong), maka prosedur ini
akan menempatkan HEAD dan TAIL pada indeks ke-1 terlebih dahulu, baru setelah
itu memasukkan data/ nilai ke dalam array data queue. Namun, jika
posisi HEAD dan TAIL tidak berada pada posisi ke-0, maka posisi TAIL yang akan
dinaikkan satu level. Jadi, pada proses enqueue, TAIL-lah yang berjalan seiring
masuknya data baru ke dalam antrian, sedangkan HEAD akan tetap pada posisi
ke-1. Berikut deklarasi prosedur enqueue dalam Bahasa C:
void enqueue(int x)
{
if ((antrian.HEAD == 0)
&& (antrian.TAIL == 0))
{
antrian.HEAD = 1;
antrian.TAIL = 1;
}
else
{
antrian.TAIL = antrian.TAIL + 1;
}
antrian.data[antrian.TAIL] = x;
c. Prosedur dequeue
Prosedur ini digunakan untuk mengeluarkan
atau membuang sebuah data/ nilai yang paling awal masuk (yang berada pada
posisi HEAD, yakni yang paling depan dari antrian) ke dalam queue.
Pekerjaan yang dilakukan oleh prosedur ini adalah menaikkan nilai HEAD satu
level. Jadi, setiap satu kali data dikeluarkan, maka posisi HEAD naik bertambah
satu level. Misalkan HEAD berada pada indeks ke-1, maka ketika akan
mengeluarkan/ menghapus data pada posisi paling depan (pada posisi HEAD),
prosedur ini akan menaikkan posisi HEAD ke indeks array ke-2.
Berikut deklarasi prosedur
pop dalam Bahasa C:
void
Dequeue(){
if (q.head > q.tail) {
q.head = 0;
q.tail = 0;
}
q.head = q.head + 1;
0 comments:
Post a Comment