数据结构-3.10.队列的应用

一.树的层次遍历:

新建队列,之后:

首先根节点1入队列,之后他的两个子节点2,3入队列,最后1就可以出队列了:

遍历2,他的两个子节点4,5入队列,最后2就可以出队列了:

再到子节点3,它的子节点入队列方式和之前同理:

遍历到4时,发现它没有子节点,所以4直接出队列即可,无需入子节点。


二.图的广度优先遍历:

新建队列,首先遍历1号结点,当遍历该结点时就要检查和该结点相邻的结点是否被遍历过,此时2,3结点都没有被遍历过,因此可以入队列,最后1结点出队列:

同理处理2结点,与2相邻的1结点已经被处理过,因此无需入队,与2相邻的4结点没被处理过,4结点入队列,最后

2结点出队列:

同理,与3结点相邻的1结点被处理过,5,6结点没被处理过,所以5,6结点入队,最后3结点出队列:

再处理4结点,与4结点相邻的结点都处理过,因此只需4结点出队列即可:

与5结点相邻的结点只有7,8结点没被处理过(6结点已经入队列了),因此只需7,8结点入队列,之后5结点出队列;

之后的结点处理方式与上述同理,直到队列为空就完成了对图的广度优先遍历。


三.队列在操作系统中的应用:

1.先来先服务,服务完的从队头出去,因此这就是电脑只有一个CPU,但能处理多个程序的原因:

2.打印机相对主机而言速度较慢,因此有一个缓冲区,把要打印的内容从主机提取出来存入缓冲区,先来的先打印,之后出缓冲区:


相关推荐
鱼子星_3 小时前
【C++】深入剖析list:list及其双向迭代器实现
开发语言·数据结构·c++·笔记·stl·list
诸葛老刘3 小时前
Ubuntu 服务器常用运维命令
运维·服务器·ubuntu
红叶舞3 小时前
成数据绑定对象,在应用程序中处理完数据后,将更新的数据序列化为JSON传回远端服务器,很多移动应用使用了这种模式处理服务器端的数据。 ...
运维·服务器·json
深圳恒讯3 小时前
H100服务器是什么?H100服务器适合哪些企业?
运维·服务器
ZJH__GO3 小时前
网络编程v4--群聊和私聊的实现
运维·服务器·网络
Ivan CloudBay4 小时前
SDK 游戏盾如何隐藏游戏服务器的真实 IP?
服务器·tcp/ip·游戏
zcmodeltech4 小时前
智慧农业沙盘模型物联网控制系统设计:基于STM32与Modbus RTU的传感器-执行器闭环方案
服务器·分布式·stm32·嵌入式硬件·物联网·能源
江屿风4 小时前
【C++笔记】【二叉搜索树】流食般投喂
开发语言·数据结构·c++·笔记
邪修king4 小时前
Re:Linux系统篇(六):动静态库 & 链接机制【完整透彻版】
linux·运维·服务器
小蒋学算法13 小时前
算法-M个非重叠子数组最大和II-WQS二分学习
数据结构·学习·算法