Circular queue
PROGRAM CIRCULAR QUEUE
Hallo
guys..
Kali
ini gua mau sharing tentang circular queue. Gua juga masih belajar kalo ada
kesalahan tolong dibantu ya hehe..
Oke circular
queue adalah queue yang melingkar, jadi jika kalian input sampai max maka tail
akan Kembali ke index -1, sedangkan jika kalian menghapus maka head akan
ditambah 1.
Mungkin
kalian masih bingung dari penjelasan diatas, oleh karena itu kita lngsung ke
programnya.
#include <iostream>
using namespace std;
#define max 5
int head=-1,tail=-1;
struct angka
{
int angka;
}data[5];
void enqueue()
{
if(head==-1)
{
head=0;
tail=0;
}
if(tail==max)
{
cout<<"
queue penuh \n";
}
else if(tail+1!=head)
{
if(tail==max)
{
tail=-1;
}else
{
tail++;
cout<<"
input : ";
cin>>data[tail].angka;
}
}
else
{
cout<<" queue penuh \n";
}
}
void dequeue()
{
if(tail==-1 ||
tail==head)
{
cout<<"
queue kosong\n";
}
else
{
head++;
cout<<"Data yang keluar :
"<<data[head].angka<<endl;
if(tail==head)
{
tail=-1;
head=-1;
}
if(tail==max)
{
tail=-1;
}
else
if(head==max)
{
head=-1;
}
}
}
void view()
{
if(head<=tail)
{
for(int
x=head+1;x<=tail;x++)
{
cout<<data[x].angka<<"|";
}
cout<<endl;
}else
{
for(int
x=head+1;x<=max;x++)
{
cout<<data[x].angka<<"|";
}
for(int
x=0;x<=tail;x++)
{
cout<<data[x].angka<<"|";
}cout<<endl;
}
}
main()
{
int pilih;
do{
cout<<"1.
input\n";
cout<<"2.
hapus\n";
cout<<"3.
view\n";
cout<<"4.
exit\n";
cout<<"pilih:";
cin>>pilih;
switch(pilih)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
case 3:
view();
break;
}
}while(pilih<4);
}
Comments
Post a Comment