DEFINISI
QUEUE
Jika
diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu
contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui
dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli
tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian
adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani
lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian
adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya
harus memiliki operasi-operasi sebagai berikut :
EnQueue
Memasukkan data ke dalam antrian
DeQueue Mengeluarkan data terdepan dari antrian
Clear Menghapus seluruh antrian
IsEmpty Memeriksa apakah antrian kosong
IsFull Memeriksa apakah antrian penuh
DeQueue Mengeluarkan data terdepan dari antrian
Clear Menghapus seluruh antrian
IsEmpty Memeriksa apakah antrian kosong
IsFull Memeriksa apakah antrian penuh
GAMBAR
QUEUE & PENGOPERASIANNYA
Untuk menggambarkan suatu queue dapat dilakukan beberapa cara , yaitu :
Misal : diberikan Queue Q = [A, B, C, D, E, F], maka Queue Q dapat digambarkan
sebagai berikut :
A
|
B
|
C
|
D
|
E
|
F
|
||
FRONT
|
REAR
|
F
|
E
|
D
|
C
|
B
|
A
|
||
REAR
|
FRONT
|
atau dapat pula digambarkan
dengan posisi tegak.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define max 10
typedef struct
{
int
data[10];
int depan;
int tail;
}
queue;
queue antrian;
void create()
{
antrian.depan=antrian.tail=-1;
}
int isempty()
{
if
(antrian.tail==-1)
return 1;
else
return 0;
}
int isfull()
{
if
(antrian.tail == 2 )
return 1;
else
return 0;
}
void enqueue(int data)
{
if(isempty()==1)
{
antrian.depan=antrian.tail=0;
antrian.data[antrian.tail]=data;
cout <<antrian.data[antrian.tail]
;
}
else if
(isfull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
cout<<antrian.data[antrian.tail];
}
else if
(isfull()==1)
{
cout<<"Antrian penuh !!"<<endl;
}
}
void dequeue()
{
int i;
int e =
antrian.data[antrian.depan];
if
(antrian.tail == -1){
cout
<<"Antrian data kosong " <<endl;
}
else
{
for
(i=antrian.depan; i<=antrian.tail -1; i++)
{
antrian.data[i] = antrian.data[i+1];
}
antrian.tail--;
cout
<<"Data yg keluar lebih dulu = "<<e<<endl;
}
}
void clear()
{
antrian.depan = antrian.tail =-1;
cout
<<"Data antrian clear..."<<endl;
}
void tampil()
{
if(isempty()==0)
{
cout <<endl;
for
(int i=antrian.depan; i<=antrian.tail; i++)
{
cout
<<"| "<<antrian.data[i]<<" |";
}
}
else
cout<<"Antrian data kosong ";
}
int isready(int data_input)
{
for(int
i=antrian.depan; i<=antrian.tail; i++)
{
if(antrian.data[antrian.tail]==data_input)
return 1;
else
return 0;
}
}
void main()
{
int
pil;
int
data;
create();
do
{
//clrscr();
cout <<"Data dalam antrian"
<<endl;
cout
<<"__________________"<<endl;
cout
<<"MIFTACHUL LUDFIE"<<endl;
cout
<<"12.1.03.02.0156"<<endl;
cout
<<"2 F"<<endl;
cout<<"MENU\n";
cout<<"1.
ENQUEUE\n2. DEQUEUE\n3. VIEW\n4. EXIT\n";
cout<<"Pilihan = ";
cin>>pil;
switch(pil)
{
case 1:
{
cout
<<endl;
cout
<<"Data = ";cin>>data;
if
(isready(data)==1)
{
cout << data << "
Sudah dimasukkan";
}
else
{
enqueue(data);
}
break;
}
case 2:
{
cout
<<endl;
dequeue();
break;
}
case 3:
{
cout
<<endl;
tampil();
break;
}
}
getch();
}
while(pil!=4);
Tidak ada komentar:
Posting Komentar