#include<iostream>
#define MAXQSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int QElemType;
typedef int Status;
using namespace std;
typedef struct{
QElemType *base;
int front;
int rear;
}SqQueue;
//循环队列的初始化
Status InitQueue(SqQueue &Q){
Q.base=new QElemType[MAXQSIZE];
if(!Q.base) exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}
//入队
Status EnQueue(SqQueue &Q,QElemType e){
if((Q.rear+1)%MAXQSIZE==Q.front)
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
//打印队列元素
Status printQueue(SqQueue Q){
QElemType e;
while(Q.front!=Q.rear){
e=Q.base[Q.front];
cout<<e<<endl;
Q.front=(Q.front+1)%MAXQSIZE;
}
return OK;
}
//取队首元素
QElemType GetHead(SqQueue Q){
if(Q.front!=Q.rear)
return Q.base[Q.front];
}
//出队
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;
}
int main(){
int n,i,y;
QElemType e,x;
SqQueue Q;
InitQueue(Q);
cout<<"请输入循环队列的长度:"<<endl;
cin>>n;
cout<<"请输入队列中的各个元素:"<<endl;
for(i=0;i<n;i++){
cin>>e;
EnQueue(Q,e);
}
cout<<"此时队列中有"<<(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE<<"个数据元素,如下所示:"<<endl;
printQueue(Q);
cout<<"请输入新入队的元素:"<<endl;
cin>>x;
EnQueue(Q,x);
cout<<"此时队列中有"<<(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE<<"个数据元素,如下所示:"<<endl;
printQueue(Q);
cout<<"此时队首元素为:"<<GetHead(Q)<<endl;
DeQueue(Q,y);
cout<<"队首元素出队后,队中各元素如下所示:"<<endl;
printQueue(Q);
return OK;
}
C++,简单循环队列的实现
最新推荐文章于 2024-04-22 14:48:17 发布