1 一般队列的“先进先出”原则
队列属于受限的线性表,遵循先进先出的原则
如果元素的输入顺序一定,那么他从队列的输出顺序也一定,这一点要同栈做好区分。
如 a,b,c依次入队列,则出队列顺序也一样
当然,上述情况只针对,从队尾入队,从队头出队的队列。
2 循环队列
为解决假溢出的情况,开始采用循环队列
循环队列中一般采用三种方式计算队列中元素个数
(1)牺牲一个单元格的方法,rear指向队尾元素的后一个位置。Q.front==(Q.rear+1)%maxsize时队满
Q.frontQ.rear时为空。
(2)设置标志位tag,入队时,tag=1,出队时tag=0,因此,由入队导致frontrear时,队满,由出队导致frontrear时,队空
(3)设置一个表示存储元素个数的变量,如s,
当smaxsize时,队满,s==0时,队空。
3 实际过程中可能还会遇到特殊规定的队列,如近几年王道上出现的,双端队列一端受限的问题。
如a,b,c依次入双端队列
双端队列一端输入受限,一端输出受限则同于一般队列,出队顺序为a,b,c.
双端队列,两端均可入队,仅有左端可出队,则出队顺序有
abc : abc均从右侧入队,从左侧出队
acb : a入队,a出队,bc从左侧入队,再从左侧出队
bac : a右侧入队,b左侧入队,c右侧入队,再依次从左边出队。
bca : a入队,b左侧入队再出队,c左侧入队再出队,a出队。
cab : a,b依次右侧入队,c左侧入队,再依次从左侧出队。
cba : abc依次从左侧入队,再从左侧出队
类似情况具体问题具体分析即可。