Secara pengertian queue adalah antrian. Pengertian secara teknis nya queue adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada satu ujung (dari tail) dan pengambilan data dilakukan dari ujung lainnya (head).
Berbeda dengan stack yang menggunakan prinsip LIFO (Last in First out), pada queue menggunakan prinsip FIFO
(First in First out).
Contoh penggunaannya dalam kehidupan nyata adalah misalnya kita sedang mengantri di rumah sakit / puskesmas untuk mendapatkan pelayanan medis, maka orang yang datang terlebih dahulu akan dilayani lebih dahulu dari pada yang datang setelahnya.
Contoh source code program queue:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#define MAX 10
typedef struct
{
char data[MAX];
char head;
char tail;
} Queue;
Queue antrian;
void Create()
{
antrian.head=antrian.tail=-1;
}
char IsEmpty()
{
if(antrian.tail==-1)
return 1;
else
return 0;
}
char 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<<"Maaf, penuh"<<endl;
cout<<data<<" Data tidak masuk";
}
}
void Dequeue()
{
char i;
char e = antrian.data[antrian.head];
if (antrian.tail == -1)
{
cout<<"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<<"Data dihapus"<<endl;
}
void Tampil()
{
if(IsEmpty()==0)
{
cout<<"Data Dalam Antrian"<<endl;
cout<<"==========================="<<endl;
cout<<endl;
for(char i=antrian.head;i<=antrian.tail;i++)
{
cout<<"| "<<antrian.data[i]<<" |";
}
}
else cout<<"Data Kosong";
}
void main()
{
int pil;
char data;
Create();
do
{
clrscr();
cout<<"Queue data berupa String"<<endl;
cout<<"=================================="<<endl;
cout<<endl;
cout<<"1. Masukkan data"<<endl;
cout<<"2. Hapus data"<<endl;
cout<<"3. Cetak"<<endl;
cout<<"4. Hapus semua"<<endl;
cout<<"5. Keluar"<<endl;
cout<<"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);
}