队列满后,自动删除头元素
#include <bits/stdc++.h>
using namespace std;
#define N 10
struct queue{
int *base;
int front,rear;
}Q;
void init(){
Q.base=new int[N];
Q.front=0,Q.rear=0;
}
int size(){
return (Q.rear-Q.front+N)%N;
}
bool empty(){
if(size()==0) return true;
return false;
}
bool pop(){
if(Q.rear==Q.front) return false;
Q.front=(Q.front+1)%N;
return true;
}
bool push(int i){
if((Q.rear+1)%N==Q.front) pop();
Q.base[Q.rear]=i;
Q.rear=(Q.rear+1)%N;
return true;
}
bool front(int &i){
if((Q.rear+1)%N==Q.front) return false;
i=Q.base[Q.front];
return true;
}
void show(){
for(int i=Q.front;i!=Q.rear;i=(i+1)%N)
cout<<Q.base[i]<<" ";
cout<<endl;
}