循环队列
#include <iostream>
using namespace std;
#define OK 1
#define FALSE 0
#define ERROR -1
#define OVERFLOW -2
#define MAXQSIZE 100
typedef int QElemType;
typedef int Status;
typedef struct{
QElemType *base;
int front;
int rear;
} SqQueue;
Status InitQueue(SqQueue &Q){
Q.base=new QElemType[MAXQSIZE];
if(!Q.base)
return ERROR;
Q.front=Q.rear=0;
return OK;
}
int QueueLength(SqQueue Q){
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status EnQueue(SqQueue &Q,QElemType e){
if((Q.rear+1)%MAXQSIZE==Q.front)
return OVERFLOW;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
Status DeQueue(SqQueue &Q,QElemType &e){
if(Q.front==Q.rear)
return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}
void tra(SqQueue Q){
cout<<Q.base[Q.front+2];
}
int main(){
int i,n;
SqQueue Q;
QElemType e;
if(InitQueue(Q)==OK)
cout<<"循环队列创建成功!\n\n";
else
{
cout<<"循环队列创建失败";
return ERROR;
}
cout<<"请输入循环队列的数据长度:";
cin>>n;
cout<<"请输入循环队列的数据元素:" ;
for(i=1;i<=n;i++){
cin>>e;
EnQueue(Q,e);
}
cout<<"循环队列的输出为:";
while(DeQueue(Q,e)==OK){
cout<<e<<" ";
}
cout<<"\n循环队列输出完毕!";
delete Q.base;
}