循环队列本质上还是用一个数组来实现的,但是需要用front和rear两个变量
来保存队列的队首元素和队尾元素的下标。
#define MAX_LEN 64
typedef int QElemType;
typedef struct CircleQueue
{
QElemType Elems[MAX_LEN];
int front;//队首元素的下标
int rear;//队尾元素的下标
int ElemNum;
}CircleQueue;
算法分析:
(1)在入队和出队时,队首和队尾往后走,走到数组末尾之后,要自动跳转到数组
开头
front = (front+1)%MAX_LEN;
rear = (rear+1)%MAX_LEN;
(2) 空队列和满队列的判断条件
空队: ElemNum == 0
满队: ElemNum == MAX_LEN
队列的示意图:
循环队列示意图:
栈的表视图:



