前面我们学习数组队列,链式队列,我们今天来学习循环队列。
队列的定义
队列(Queue)也是一种线性表, 但是它仅能在一端进行插入,而另一端进行删除的操作 ,插入的一端称为 队尾rear,删除的一端称为 队头front 。 向一个栈插入新元素又称作进队或入队, 从一个栈删除元素又称作出队或离队 。显而易见,它的特性是 先进先出、后进后出 。
循环队列
在队列的顺序存储表示时,如果还是用之前顺序表的模式来描述,则会显得很浪费空间。
因此采用一种循环的结构去实现队列的顺序存储。
一般情况下,我们队满和队空时标志都是Q->front=Q->rear;
因此为了区别两种情况,在这里采用的方法是:牺牲一个元素空间,约定以“队列头指针在队列尾的下一位置(指环状的下一位置)上即表示满了!
初始化建空队列时,令front=rear=0;每插入新的队列元素时,尾指针增1
每当删除队列头元素时,“头指针增1”
内存中的结构
队列的特点
先进先出、后进后出
队列的定义一般遵循此结构:
//定义队列
struct Queue
{