您当前的位置: 首页 >  数据结构与算法

星拱北辰

暂无认证

  • 1浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【数据结构与算法】浅谈队列的应用

星拱北辰 发布时间:2021-06-29 13:30:14 ,浏览量:1

学习数据结构与算法的时候,我们学到的队列Queue与FIFO紧密相关,First Input First Output,先进先出。

队列是一种特殊的线性表,特点是两端一端进一端出,与日常生活中不含插队的排队相似,所以名为队列。

队列与栈应该是非常工具性的数据结构了,栈一端进出,具有LIFO的特点,与FIFO迥异。

队列的应用通常被阐释为实际中的排队活动,实际上它在计算机系统以及算法实现中用途广泛。

FIFO队列常常用作算法实现的辅助数据结构,特别是递归算法的非递归实现。 DFS的非递归实现需要借助栈,BFS的非递归实现需要借助队列。

消息队列MQ、输入队列、输出队列、就绪队列、等待队列……在计算机系统和大规模软件系统中,我们经常可以看到队列的身影。

队列往往可以被这样用于计算机系统中:

  • 解决主机与外部设备之间速度不匹配的问题。
  • 解决由多用户引起的资源竞争问题。

实际的队列未必是FIFO队列。以操作系统进程状态转化中涉及到的就绪队列而言,其实现可以是FIFO队列、优先队列、树或简单的无序链表等,不必是传统意义上的FIFO队列。

比如说模拟的网络打印机的设计。其队列固然可以用FIFO队列,却也可以用优先队列等。

优先队列与FIFO队列关系不大,底层的经典实现是堆,其应用也是比较广泛的,毕竟我们不可能一直只使用FIFO队列。

编程语言往往对队列提供了实现,优先队列格外被重视。 比如Java的java.util.Queue接口,它可以使用LinkedList作为双向链队列的实现;又比如Java的java.util.PriorityQueue,直接提供了优先队列的实现。 C++的STL中也提供了头文件#include 下的priority_queue实现。

学好栈和队列,对于提升我们的算法实现能力,大有裨益。

关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0796s