在引用循环队列前我们需要了解队列是如何线性实现的(下图有错,x=sq[front++])
简单地讲,便是当队列为空时front = rear = 0,每当插入元素仅有尾指针的循环链表+1,删除元素是头指针+1但昰,我们会发现一个问题如上面的第四个图,01,2三个空间并没有使用因此,为了占用该空间我们使用了循环队列来实现。
循环队列原理图:
我们可以发现当循环队列属于上图的d1情况时,是无法判断当前状态是队空还是队满为了达到判断队列状态的目的,可以通過牺牲一个存储空间来实现
int rear; //队仅有尾指针的循环链表,若队尾不为空则指向队尾元素的下一个位置