A. Definisi Queue (Antrian)
Queue merupakan suatu struktur data linear. Konsepnya hampir
sama dengan Stack, perbedaannya adalah operasi penambahan dan
penghapusan pada ujung yang bebeda. Penghapusan dilakukan pada bagian
depan (front) dan penambahan berlaku pada bagian belakang (Rear).
Elemen-elemen di dalam antrian dapat bertipe integer, real, record dalam
bentuk sederhana atau terstruktur.
Tumpukan disebut juga “Waiting Line” yaitu penambahan elemen
baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan
pada bagian depan. Sistem pada pengaksesan pada Queue menggunakan sistem
FIFO (First In First Out), artinya elemen yang pertama masuk itu yang
akan pertama dikeluarkan dari Queue. Queue jika diartikan secara
harfiah, queue berarti antrian. Queue merupakan salah satu contoh
aplikasi dari pembuatan double linked list yang cukup sering kita temui
dalam kehidupan sehari-hari, misalnya saat anda mengantri diloket untuk
membeli tiket.
Istilah yang cukup sering dipakai apabila seseorang masuk dalam sebuah
antrian adalah enqueue. Sedang istilah yang sering dipakai bila
seseorang keluar dari antrian adalah dequeue.
Karakteristik
Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian
Operasi pada
Queue atau antrian
1. tambah(menambah item pada belakang antrian)
2. hapus (menghapus elemen depan dari antrian)
3. kosong( mendeteksi apakah pada antrian mengandung elemen
atau tidak)
1. Create()
Untuk menciptakan
dan menginisialisasi Queue
Dengan cara
membuat Head dan Tail = -1
2. 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.
3. 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
4. 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
5. Dequeue()
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.
6. 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
7. Tampil()
Untuk menampilkan
nilai-nilai elemen Antrian
Menggunakan
looping dari head s/d tail

Fitur dasar Queue
Seperti Stack, Queue juga daftar memerintahkan elemen tipe data yang sama.Antrian FIFO (First Out Pertama) struktur. Setelah elemen baru dimasukkan ke dalam Antrian, semua elemen
dimasukkan sebelum elemen baru dalam antrian harus dihilangkan, untuk
menghilangkan unsur baru. Mengintip () fungsi sering digunakan untuk mengembalikan nilai elemen pertama tanpa dequeuing itu.
#include
<iostream.h>
#include
<conio.h>
#include
<stdio.h>
#define
max 10
typedef
struct
{
int data[max];
int head;
int tail;
}Queue;
Queue
antrian;
void
create()
{
antrian.head=antrian.tail=-1;
}
int
IsEmpty()
{
if (antrian.tail==-1)
return 1;
else
return 0;
}
int
IsFull()
{
if(antrian.tail>=max-1)
return 1;
else
return 0;
}
void
Enqueue(int data)
{
if(IsEmpty()==1)
{
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
cout<<"data"<<antrian.data[antrian.tail]<<"Masuk!!!";
}
else if(IsFull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
cout<<"data"<<antrian.data[antrian.tail]<<"Masuk!!!";
}
else if (IsFull()==1)
{
cout<<"Ruangan
Penuh!!"<<endl;
cout<<data<<"Gak Bisa
MAsuk!!!";
}
}
void
Dequeue()
{
int i;
int e = antrian.data[antrian.head];
if(antrian.tail==-1)
{
cout<<"Gak ada antrian..
Data Kosong"<<endl;
}
else
{
for(i=antrian.head;i<antrian.tail-1;i++)
{
antrian.data[i]=antrian.data[i+1];
}
antrian.tail--;
cout<<"Data yang keluar lebih
dulu ="<<e<<endl;
}
}
void
clear()
{
antrian.head=antrian.tail=-1;
cout<<"Duh Lega, Ruangan jadi gak
sumpek.."<<endl;
cout<<"Data Clear";
}
void
tampil()
{
if(IsEmpty()==0)
{
cout<<"data dalam
antrian"<<endl;
cout<<"================================";
cout<<endl;
for(int i=antrian.head;i<=antrian.tail;i++)
{
cout<<"|
"<<antrian.data[i]<<" |";
}
}
else
{
cout<<"ga ada antrian..
Data Kosong";
}
}
void
main()
{
int pil;
int data;
create();
do
{
clrscr();
cout<<"Implementasi antrian dengan
struct"<<endl;
cout<<"=========================================";
cout<<endl;
cout<<"1.
Enqueue"<<endl;
cout<<"2.
Dequeue"<<endl;
cout<<"3.
print"<<endl;
cout<<"4.
clear"<<endl;
cout<<"5.
exit"<<endl;
cout<<"Masukkan Pilihan anda
:" ;
cin>>pil;
switch(pil)
{
case 1:
{
cout<<endl;
cout<<"data = ";
cin>>data;
Enqueue(data);
break;
}
case 2:
{
cout<<endl;
Dequeue();
break;
}
case 3:
{
cout<<endl;
tampil();
break;
}
case 4:
{
cout<<endl;
clear();
break;
}
}
getch();
}
while(pil!=5);
}
Hasil Output Queue
No Response to "QUEUE (ANTREAN)"
Posting Komentar