ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 队列 > 先进先出 First In First Out - 顺序队列 - 链队 ### 单队列 - 顺序队列(数组) - 链式队列(链表) 顺序队列或存在「假溢出」问题,明明数组还有空间,却无法入队。 > 为了避免当只有一个元素的时候,队头和队尾重合使处理变得麻烦,所以引入两个指针,front 指针指向对头元素,rear 指针指向队列最后一个元素的下一个位置,这样当 front 等于 rear 时,此队列不是还剩一个元素,而是空队列。——From 《大话数据结构》 ### 循环队列 > 通过模运算方式 Q.rear = (Q.rear + 1) % Q.maxsize 建立循环队列,解决「假溢出」问题和越界问题 顺序队列中,front 等于 rear 时,队列为空。但是在循环队列中,有可能是队列满了。 解决方式: - 增加一个标识flag变量,标识队列是否满了 - ( rear + 1) % Q.maxsize = front ,如果相等,说明队列已满 ### 常用场景 当我们需要按照一定顺序处理数据时可以考虑使用队列。 - 阻塞队列 - 线程池中的请求/任务队列 - Linux内核进程队列 - 播放列表 - 消息队列 - 等等...