typedef struct{
int data[MaxSize];
int front;
int rear;
}SqQueue;
void initQueue(SqQueue &qu){
qu.front=qu.rear=0;
}
int isEmpty(SqQueue qu){
if(qu.front==qu.rear)
return 1;
else
return 0;
}

int isFull(SqQueue qu){
if((qu.rear+1)%maxSize==qu.front)
return 1;
else
return 0;
}

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

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

- 重点在于 maxSize 的理解,如果不理解可以在 哔哩哔哩 上看看 ~
- 队列的具体配置可以根据实际应用来定。比如,队满和队空的条件,先入队(出队)元素再移动指针,还是先移动指针再入队(出队)元素,这些都可以人为规定而不统一。
- 队列中元素个数 :
num=(rear-front+maxSize)%maxSize