//循环队列 front,rear MAXSIZE
#include<bits/stdc++.h>
using namespace std;
#define OK 1
#define ERROR 0
#define MAXSIZE 10
typedef int Status;
typedef int QElemType;
typedef struct{
QElemType *base;
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue &Q){
Q.base = new QElemType [MAXSIZE];
Q.front=Q.rear=0;
return OK;
}
Status EnQueue(SqQueue &Q,QElemType e){
if((Q.rear+1)%MAXSIZE==Q.front) return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
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)%MAXSIZE;
return OK;
}
int GetLength(SqQueue Q){
return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}
int main(){
SqQueue Q;
InitQueue(Q);
EnQueue(Q,1);
EnQueue(Q,2);
cout<<GetLength(Q)<<endl;
QElemType e;
DeQueue(Q,e);
cout<<e<<endl;
}
数据结构:循环队列
于 2023-11-30 16:53:37 首次发布