//用线性表 实现循环队列。。
#include<iostream>
using namespace std;
#define MAX_SIZE 100
//用线性表实现循环队列
class myqueue
{
private:
int term[MAX_SIZE];
int front,rear;
public :
myqueue();
bool is_empty();
bool is_full();
void push(int a);
int pop();
};
myqueue::myqueue()
{
front=-1;//第一个有元素的下标
rear=0;//最后一个有元素的下表
}
bool myqueue::is_empty()
{
return rear-1==front;
}
bool myqueue::is_full()
{
return (rear-2==front || (rear==0 && front==MAX_SIZE-2));
}
void myqueue::push(int a)
{
if(!is_full())
{
if(front==MAX_SIZE-2) front=0;
else front++;
term[front]=a;
}
else cout<<"failed push ! full queue"<<endl;
}
int myqueue::pop()
{
int q=rear;
if(!is_empty())
{
if(rear==MAX_SIZE-2) rear=0;
else rear++;
}
else cout<<"failed push ! full queue"<<endl;
return term[q];
}
int main()
{
myqueue s;
s.push(1);
s.push(2);
s.push(3);
cout<<s.pop()<<endl;
cout<<s.pop()<<endl;
cout<<s.pop()<<endl;
//cout<<s.pop()<<endl;
}