队列
队列是一种操作被限制的线性表,操作只有两种:入队、出队。
队列只能先进先出,后进后出。
如何实现“队列”
队列可以用数组实现,也可以用链表实现。
用数组实现的队列叫顺序队列,链表实现的栈叫链式队列。
时空复杂度
在顺序队列中,当队尾空间不够的时候,需要进行数据的移动,以便留出足够的空间进行入队操作,入队和出队的平均时间复杂度都是O(1)。
我们可以使用循环队列来解决顺序队列中数据的搬移,重点是确定好队空和队满的判定条件。
队空判定条件:head(队列头指针) == tail(队列尾指针)
队满判定条件:(tail + 1)%n==head,n为队列长度
队列的应用
对于大部分资源有限的场景,当没有空闲资源时,基本上都可以通过队列这种数据结构来实现请求排队。