和栈一样,队列也是一种受限制的线性结构
它的特点是先进先出,后进后出
队列的实现方式可以基于数组或链表,前者叫顺序队列,后者叫链式队列
对于两个主要操作出队和入队的判断
非循环顺序队列:
出队:首先判断是否队空,空返回false,要不返回队头,队头指向下一个
入队:对于顺序队列我们要判断是否队满(tail==capacity),再判断是不是伪队满(head!=0)
非满直接入队,队尾指向下一个
非循环链式队列:
队头出队,队尾插入
出队:首先判断是否队空,空返回false,要不返回队头,队头指向下一个
入队:链表无限大,不要判断队满,直接入队,队尾指向下一个
循环顺序队列:
会浪费一个数组元素空间,出队还是队空的判断,入队还是队满的判断,与非循环顺序队列一样,队空的判断依然是(head==tail),不同的是队满的判断是(tail+1)%capacity==head
head和tail指向下一个元素的时候由于可能越界需要进行取余