QUEUE
TI Politala Algoritma Pemrograman 2B
A. Pengertian Queue
Queue
dalam struktur data atau yang diartikan sebagai antrian merupakan sekumpulan
data dimana saat menambahkan elemen hanya bisa dilakukan pada suatu ujung
disebut sisi belakang (rear) dan penghapusan (pengambilan elemen) dilakukan
lewat ujung lain/sisi depan(front). Berbeda dengan stack yang bersifat LIFO
maka queue bersifat FIFO (First In First Out), yaitu data yang pertama masuk
maka akan menjadi yang pertama kali keluar begitu pun sebaliknya.
Tumpukan
disebut juga dengan "Waiting Line" yaitu suatu penambahan elemen baru
dilakukan pada bagian belakang dan penghapus elemen dilakukan dilakukan pada
bagian depan. Elemen-elemen dicdalam antrian dapat bertipe integer, real,
record dalam bentuk sederhana atau terstruktur. Queue merupakan salah satu
contoh aplikasi dari pembuatan double linked list yang cukup sering ditemui di
kehidupan sehari-hari, midalnya saat pengantrian tiket. Istilah yang cukup
sering dipakai adalah enqueue yaitu apabila seseorang masuk dalam sebuah
antrian. Sedangkan dequeue adalah istilah yang dipakai saat seseorang keluar
dari antrian.
B. Deklarasi Queue dengan Array
Proses pendeklarasian antrian adalah
proses pembuatan struktur antrian dalam memori. Struktur antrian terdiri dari
data dalam array, head untuk menunjukkan ujung dari antrian dan tail untuk
menunjukkan akhir dari antrian.
#define
MAX 5
#include
<iostream>
using
namespace std;
typedef
struct
{
int data [MAX];
int head;
int tail;
}Queue;
C. Inisialisasi Queue
Inisialisasi
antrian adalah proses pembuatan suatu antrian kosong. Proses inisialisasi untuk
antrian yang menggunakan array adalah dengan mengisi nilai field head dan tail
dengan nilai 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen
pertama array dimulai dengan nilai 0 (nol) maka head dan tail diisi dengan
nilai -1.
void
Create()
{
antrian.head=antrian.tail=-1;
}
D. Operasi-Operasi pada Queue
1.
Create Queue (Q)
Untuk
menciptakan dan menginisialisasi Queue, dengan
cara membuat Head dan Tail = -1
Berikut
deklarasi prosedur create pada queue :
void
create()
{
antrian.HEAD = -1;
antrian.TAIL = -1;
}
2.
Make NullQ (Q)
Mengosongkan
antrian Q, jika ada elemen maka semua elemen dihapus.
3.
EnQueue
Untuk
menambahkan 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.
Berikut
deklarasi prosedur EnQueue:
void
enqueue()
{
if (IsEmpty())
{
antrian.HEAD=antrian.TAIL=0;
cout<<”Masukkan data : “;
cin>>antrian.data[antrian.TAIL];
}
else
if(IsFull())
{
cout<<”ANTRIAN SUDAH PENUH!”;
}
}
4.
DeqQueue
Digunakan
untuk menghapus elemen terdepan/pertama (head) dari Antrian. Dengan cara
menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1. Penggeseran
dilakukan dengan menggunakan looping.
Berikut
deklarasi fungsi DeQueue:
int
Dequeue()
{
int i;
int e = antrian.data[antrian.HEAD];
for(i=antrian.HEAD;i<=antrian.Tail-1;i++)
{
antrian.data[i]=antrian.data[i+1];
}Antrian.TAIL--;
Return e;
}
5.
Clear
Untuk
menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
Penghapusan
elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset
indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi
terbaca.
Berikut
deklarasi fungsi clear:
void
clear()
{
antrian.HEAD = -1;
antrian.TAIL = -1
cout<<"Antrian sudah
dikosongkan! ";
}
6.
IsEmpty
Untuk
memeriksa apakah Antrian sudah penuh atau belum. Dengan cara memeriksa nilai
Tail, jika Tail = -1 maka empty. Kita tidak memeriksa Head, karena Head adalah
tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan
berubah-ubah. Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian
kebelakang, yaitu menggunakan nilai Tail.
Berikut
deklarasi fungsi IsEmpty :
int
IsEmpty()
{
if (antrian.HEAD=antrian.TAIL==-1)
{
return
1;
}
else
{
return
0;
}
}
7.
IsFull
Untuk
mengecek apakah Antrian sudah penuh atau belum
Dengan
cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas
elemen array pada C) berarti sudah penuh.
Berikut
deklarasi fungsi IsFull :
int
IsFull()
{
if (antrian.TAIL == max-1)
{
return 1;
}
else
{
return 0;
}
}
}
Contoh Program Queue
DAFTAR PUSTAKA
http://atokise.blogspot.com/2016/11/program-queue.html
http://suputradwipratama274.blogspot.com/2015/06/penjelasan-tentang-queue-contoh-program.html
http://sekilaslihat.blogspot.com/2015/06/rangkuman-materi-queue.html
http://blog-arul.blogspot.com/2012/01/queue-pada-struktur-data.html
https://blognyonyait.blogspot.com/2017/05/makalah-sistem-antrian-queue-dengan.html