循环队列模型是:front没有元素,rear有元素。P153

循环队列的存储结构

#define MaxSize 100
typedef int ElemType;
struct SqQueue {
    ElemType data[MaxSize];
    int front,rear;
};

初始化队列的算法

void InitQueue(SqQueue &qu) {
    qu.front=qu.rear=0;
}

判断队空的算法

int QueueEmpty(SqQueue &qu) {
    return (qu.front==qu.rear);
}

进队的算法

int EnQueue(SqQueue &qu,ElemType x) {
    if((qu.rear+1)%MaxSize==qu.front) //队满
        return 0;
    qu.rear=(qu.rear+1)%MaxSize;
    qu.data[qu.rear]=x;
    return 1;
}

出队的算法

int DeQueue(SqQueue &qu,ElemType &x) {
    if(qu.front==qu.rear)
        return 0;
    qu.front=(qu.front+1)%MaxSize;
    x=qu.data[qu.front];
    return 1;
}