队列(Queue)

队列是一种特殊的线性表,只能在头尾两端进行操作

队尾(rear):只能从对尾添加元素,一般叫enQueue,入队;
队头(front):只能从队头移除元素,一般叫deQueue,出队;
遵循先进先出的原则,First In First Out,FIFO;

底层使用双向链表实现,因为双向链表的头尾操作都是O(1)复杂度,而传统数组、单向链表都是O(n)复杂度;
PS:其实队列也可以采用动态数组作为底层去实现,且可以做到O(1)复杂度,该方式实现的队列叫做:循环队列

双端队列(Deque (double ended queue))

双端队列是能在头尾两端添加、删除元素的队列;

同样底层采用双向链表实现;

循环队列(Circle Queue)

PS:这的循环不是我们理解队列头尾相连后的环形意思,而是环形队列底层使用的数组循环利用的意思
image.png
当我们的底层数组元素的index 已经达到了 length - 1 时,再往里添加元素则会进行取模(就是取余数)公式:(front + size) % length,得到插入元素的index = (5 + 3) % 7 = 1;

底层采用数组实现;

循环双端队列