队列的顺序实现(考研)
王道考研笔记
知识总览

初始化队列操作:
创建队列我们需要定义两个变量front,rear用于标记对头和队尾,初始化时让front和rear都指向data[0]。

入队操作:
正常来说我们可能会想到队列已满时的条件是rear==Maxsize,但是这个方式如果放在栈中是行的通的。可在队列中如果出队那么队列下方的空间则会出现空闲。
那么则不能说明队列已满。

为了解决这一问题我们必须让队尾指向出队空闲的位置。下图中的代码则用取模运算的方式让队尾指向空闲位置。


用模预算将存储空间在逻辑上变成了“环状”。可以称为:循环队列
这种方式虽然提高了内存空间的存储效率,但是并没有真正的将队列填满,需要牺牲一个内存空间。可能大家会疑惑为什么rear不能和front在同一位置呢,这样不就可以填满队列了吗?
因为我们在初始化队列的时候有一个判空操作Q.rear=Q.front,如果rear移动到front的位置那么说明队列为空。

循环列表——入队操作:

循环列表——入队操作:只能让对头元素出队

方案二:判断队列已满/已空

方案三:判断队列已满/已空

知识总结:


浙公网安备 33010602011771号