Sama seperti Stak namun operasinya ada ada di depan, sedangkan di belakang/ekor/tail sebagai pintu masuk antrian, Struktur Data Antrean (Queue) merupakan suatu bentuk khusus dari List Linier dengan operasi pemasukan data hanya diperbolehkan pada salah satu sisi, yang disebut sisi Belakang / ekor (Tail) dan operasi penghapusan hanya diperbolehkan pada sisi lainnya yang disebut sisi Depan / kepala (Head) dari LinkedList.
seperti halnya kita saat mengantri disebuah loket, orang yang pertamakali datang dialah yang pertamakali dilayani.
•CREATE
Untuk menciptakan dan menginisialisasi Queue
Dengan cara membuat Head dan Tail = -1
•ISEMPTY
Untuk memeriksa
apakah
queue kosong
•ISFULL
Untuk memeriksa
apakah
queue sudah penuh
•ENQUEUE
Untuk menambahkan
item pada posisi
paling belakang
•DEQUEUE
Untuk menghapus
item dari posisi
paling depan
•CLEAR
Untuk mengosongkan queue
#include
#include
#include
#define MAX 6
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;
printf("%d, Sudah Masuk!",antrian.data[antrian.tail]);
void tampil();
{
int i;
if (isempty()==0)
{
for(i=antrian.head;i<=antrian.tail;i++)
{
printf(" %d ",antrian.data[i]);
}
}
else
printf("\n**** QUEUE IS EMPTY ****\n");
}
}
else
if(isfull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
printf("%d , Sudah Masuk!",antrian.data[antrian.tail]);
}
else{
if(isfull()==1)
{
cout<<"\n\n**** QUEUE IS FULL , data TIDAK dapat masuk ****";
}
}
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
int dequeue()
{
if (isempty()==1){
cout<<"\n**** ERROR :: QUEUE IS EMPTY ****";
}else
if(isempty()==0){
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--;
cout<<"\n\nData Yang Keluar => "<}
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
void clear()
{
antrian.head=antrian.tail=-1;
printf("\n\n**** DATA CLEAR ****");
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
void tampil()
{
int i;
if(isempty()==0)
{
cout<<"Data Yang ada Dalam QUEUE : "<for(i=antrian.head;i<=antrian.tail;i++)
{
printf("| %d |",antrian.data[i]);
}
}
else
{
printf("\n**** QUEUE IS EMPTY ****\n");
}
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
void main()
{
int pil;
int data;
create();
do
{
clrscr();
gotoxy(25,2);cout<<"========MENU PILIHAN========"<gotoxy(25,4);cout<<"============================"<gotoxy(30,6);cout<<" 1. ENQUEUE "<gotoxy(30,7);cout<<" 2. DEQUEUE "<gotoxy(30,8);cout<<" 3. TAMPILAN "<gotoxy(30,9);cout<<" 4. CLEAR "<gotoxy(30,10);cout<<" 5. KELUAR "<gotoxy(25,12);cout<<"============================"<gotoxy(25,14);cout<<" Masukan Pilihan Anda => ";cin>>pil;
switch(pil){
case 1:
clrscr();
printf("\n\n Masukan Data => "); scanf("%d",&data);
enqueue(data);
break;
case 2:
clrscr();
dequeue();
break;
case 3:
clrscr();
cout<tampil();
break;
case 4:
clrscr();
clear();
break;
case 5:
clrscr();
gotoxy(25,8);cout<<"**** TERIMA KASIH ****"<break;
}
getch();
} while(pil!=5);
}
#include
#include
#define MAX 6
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;
printf("%d, Sudah Masuk!",antrian.data[antrian.tail]);
void tampil();
{
int i;
if (isempty()==0)
{
for(i=antrian.head;i<=antrian.tail;i++)
{
printf(" %d ",antrian.data[i]);
}
}
else
printf("\n**** QUEUE IS EMPTY ****\n");
}
}
else
if(isfull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
printf("%d , Sudah Masuk!",antrian.data[antrian.tail]);
}
else{
if(isfull()==1)
{
cout<<"\n\n**** QUEUE IS FULL , data TIDAK dapat masuk ****";
}
}
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
int dequeue()
{
if (isempty()==1){
cout<<"\n**** ERROR :: QUEUE IS EMPTY ****";
}else
if(isempty()==0){
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--;
cout<<"\n\nData Yang Keluar => "<
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
void clear()
{
antrian.head=antrian.tail=-1;
printf("\n\n**** DATA CLEAR ****");
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
void tampil()
{
int i;
if(isempty()==0)
{
cout<<"Data Yang ada Dalam QUEUE : "<
{
printf("| %d |",antrian.data[i]);
}
}
else
{
printf("\n**** QUEUE IS EMPTY ****\n");
}
gotoxy(25,8);cout<<"PRESS any key for back to MENU";
}
void main()
{
int pil;
int data;
create();
do
{
clrscr();
gotoxy(25,2);cout<<"========MENU PILIHAN========"<
switch(pil){
case 1:
clrscr();
printf("\n\n Masukan Data => "); scanf("%d",&data);
enqueue(data);
break;
case 2:
clrscr();
dequeue();
break;
case 3:
clrscr();
cout<
break;
case 4:
clrscr();
clear();
break;
case 5:
clrscr();
gotoxy(25,8);cout<<"**** TERIMA KASIH ****"<
}
getch();
} while(pil!=5);
}