#include<iostream>
using namespace std;
#define MAXQSIZE 100
typedef struct{
int *base;
int front,rear;
}SqQueue;
//初始化
int InitQueue(SqQueue &Q){
Q.base=new int[MAXQSIZE];
if(!Q.base) exit(1); //分配失败
Q.front=Q.rear=0;
return 1;
}
//求长度
int QueueLength(SqQueue Q){
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
//入队列
int EnQueue(SqQueue &Q,int e){
if((Q.rear+1)%MAXQSIZE==Q.front) return 0; //队列满,报错
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return 1;
}
//出队列
int DeQueue(SqQueue &Q,int &e){
if(Q.front==Q.rear) return 0; //队列空,报错
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return e;
}
//取队头元素
int GetHead(SqQueue Q){
if(Q.front!=Q.rear) //非空
return Q.base[Q.front];
}
int main(){
SqQueue Q;
InitQueue(Q);
cout<<"初始队列长度为:"<<QueueLength(Q);
EnQueue(Q,3);
EnQueue(Q,4);
EnQueue(Q,5);
cout<<endl<<"入队后队列长度为:"<<QueueLength(Q);
cout<<endl<<"入队后队头元素:"<<GetHead(Q);
int e;
DeQueue(Q,e);
cout<<endl<<"出队元素为:"<<e;
cout<<endl<<"出队后队列长度为:"<<QueueLength(Q);
cout<<endl<<"出队后队头元素:"<<GetHead(Q);
return 1;
}
运行结果