5 队列

瘦欲@ 提交于 2020-08-10 22:42:28

队列

主要内容:

  1. 队列
  2. 循环队列
  3. 队列的链式存储
  4. 队列的应用

-------------------------------------------------------------------------------------------------------------------

队列&栈:

  • 队列是两端出入数据,分队首、队尾,堆栈是单端出入数据,有栈顶指针;
  • 要明确理解栈和队列的应用场景,这些场景我提到过啊,比如栈常用在函数调用发生时,形参压栈,保留现场信息(细节看:从零开始学习数据结构-->栈),以及递归转为非递归使用栈,队列下文会提到键盘缓冲区的本质上是循环队列。

 

1 队列

逻辑线性结构,先进先出 FIFO;入队列在队尾,出队列在队首;

 

队首等于队尾存在 2 种情况:

空队:刚刚做完出队列操作;

满队:刚刚做完入队列操作;

 

模型如下:

队列的实现:循环链表(物理非线性结构)、循环数组(物理线性结构)

 

2 循环队列

 

3 链式存储

思路:就是用 head 始终指向头结点,tail 始终指向尾结点,静态的模板变量,单链表实现,入队从尾 tail,出队从头 head;

模型如下:

(数组和链表实现队列,自己补充)

 

4 队列的应用

键盘缓冲区,实质上是循环队列;

I/O 缓冲区,在网络环境下,存在着连入网络的节点速度差异;在不进行任何处理的情况下,高速节点向低速节点所发出的数据,在低速节点不能及时处理的情况下会产生“数据淹没”现象(流量失控)。

为进行流量控制,通信双方设置缓冲区;接收方所接到的数据达到缓冲区的临界点时,向发送方发送“暂停发送”信号,等相关数据处理完毕后再向发送方发出“继续发送”的信号,流量控制是通过缓冲区实现的。

 

 

内容摘自微信公众号《编程剑谱》

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!