队列的应用——层次遍历、计算机系统

队列在层次遍历中的应用

在信息处理时,有一类问题需要逐层或逐行处理。这类问题的解决方法往往是在处理当前层或当前行时就对下一层或下一行做预处理,把处理顺序安排好,等到当前层或当前行处理完毕,就可以处理下一层或下一行。

使用队列可以保存下一步的处理顺序,例如在层次遍历二叉树时,遍历过程如下:
1、根节点入队
2、若队为空,结束遍历,否则重复3
3、队列中第一个结点出队并访问之。若其有左孩子,则将左孩子入队;若其有右孩子,则将右孩子入队,返回2

二叉树和层次遍历二叉树的过程如下图所示,如果是初学者可以先跳过该部分,等后面学到树与二叉树时会再次提到。
层次遍历二叉树-队列
层次遍历二叉树的过程

队列在计算机系统中的应用

队列在计算机系统中的应用非常广泛,此处介绍两个方面。

第一:队列可以解决主机与外部设备之间速度不匹配的问题。例如主机和打印机之间的速度不匹配,主机输出数据的速度比打印数据的速度要快得多,不能直接把输出数据送到打印机。解决方法是设置一个打印数据缓冲区,主机把要打印的数据依次写入这个缓冲区,写满后暂停输出,转去处理其他事情。打印机打印时就从缓冲区中按照先进先出的原则依次取出数据并打印打印完后再向主机发出请求,主机接到请求后再向缓冲区写入打印数据
这样做技能保证打印数据的正确性,又能提高主机的效率。打印数据缓冲区中所存储的数据就是一个队列。

第二:碎裂可以解决由多用户引起的资源竞争问题。例如CPU对于资源的竞争,在一个带有多终端的计算机系统上,有多个用户需要COU各自运行自己的程序,它们分别通过各自的终端向操作系统提出占用CPU的请求。操作系统通常按照每个请求在时间上的先后顺序,把它们排成一个队列,每次把CPU分配给队首请求的用户使用当相应的程序运行结束或用完规定的时间间隔后,令其出队,再把CPU分配给新的队首请求的用户使用
这样做既能满足每个用户的请求,又能使CPU正常运行(不因此发生冲突)。

本文内容为个人学习总结所得,如有问题欢迎评论区指正/讨论。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HePingxxb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值