循环队列
(一)定义
#define MAXSIZE 100 //最大队列长度
typedef struct{
QElemType *base;
int front;
int rear; //队尾指针始终指向下一个元素要插入的位置。队尾无数据
}SqQueue;
(二)初始化
Status InitQueue(SqQueue &Q){
//构造一个空队列Q
Q.base=(QElemtype *)malloc(MAXSIZE*sizeof(QElemType));
if(!Q.base) exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}
(三)元素个数即队列长度
int Queuelength(SqQueue Q){
return (Q.rear-Q.front+ MAXSIZE)% MAXSIZE;
}
(四)增
Status EnQueue(SqQueue &Q,QElemType e){
//插入元素e为队列Q的新的队尾元素
if((Q.rear+1)% MAXSIZE==.front) return OK;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)% MAXSIZE;
return OK;
}
(五)删
Status DeQueue(SeQueue &Q,QElemType &e){
//若队列不空,则删除Q的队头元素,用e返回值,并返回OK;
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)% MAXSIZE;
return OK;
}