main.cpp
#include <iostream>
#include "queue.h"
using namespace std;
int main()
{
cirqueue<int> w2;
int item;
for(int i=0;i<maxqueue;i++)
{
cin>>item;
w2.append(item);
}
w2.serve();
int t;
w2.retrieve(t);
cout<<t<<endl;
return 0;
}
queue.h
enum errorcode{overflow,underflow,success};
const int maxqueue=10;
template <class entry>
class cirqueue
{
public:
cirqueue();
bool empty();
bool full();
int size();
void clear();
errorcode serve();
errorcode append(entry &item);
errorcode retrieve(entry &item);
private:
int cnt;
int front,rear;
entry cir_queue[maxqueue];
};
template <class entry>
cirqueue<entry>::cirqueue()
{
cnt=0;
rear=maxqueue-1;
front=0;
}
template <class entry>
bool cirqueue<entry>::empty()
{
return cnt==0;
}
template <class entry>
bool cirqueue<entry>::full()
{
return cnt==maxqueue;
}
template <class entry>
int cirqueue<entry>::size()
{
return cnt;
}
template <class entry>
void cirqueue<entry>::clear()
{
cnt=0;
rear=maxqueue-1;
front=0;
}
template <class entry>
errorcode cirqueue<entry>::serve()
{
if(cnt<=0)
{
return underflow;
}
else
{
cnt--;
front=((front+1)==maxqueue)?0:front+1;
return success;
}
}
template <class entry>
errorcode cirqueue<entry>::append(entry &item)
{
if(cnt==maxqueue)
{
return overflow;
}
else
{
cnt++;
rear=((rear+1)==maxqueue)?0:rear+1;
cir_queue[rear]=item;
return success;
}
}
template <class entry>
errorcode cirqueue<entry>::retrieve(entry &item)
{
if(cnt==0)
{
return underflow;
}
else
{
item=cir_queue[front];
return success;
}
}