数据结构与算法 / 队列(queue)

@time    2019-08-04
@author  Ruo_Xiao

一、定义

        队列是一种操作受限的线性表,只能从一端插入从另一端弹出的数据结构。

二、特性

        先进者先出,后进者后出。

三、分类

1、基于数组实现的队列,名为顺序队列。实现一个有界队列。

2、基于链表实现的队列,名为链式队列。实现一个无界队列。

3、若队列收尾相连,则该队列名为循环队列

4、阻塞队列,在队列中增加了阻塞操作的功能。

  • 当队列为空,从队头取出元素,会堵塞在那里,直到有元素入队,该操作才取出元素并返回。
  • 当队列为满,向队尾插入元素,会堵塞在那里,直到有元素出队,该操作才插入元素并返回。

5、并发队列,线程安全的队列。就是在 enqueue 和 dequeue 中加入锁。

四、应用场景

1、线程池中,若线程不足,请求操作可以暂存在队列中,依次等待线程池中有线程。

2、消息队列,用于两个模块解耦、削峰、异步等操作。

五、实现(C++)

github

六、拓展

  1. dueue,双端队列。
  2. 在 STL 中,queue 的底层实现就是 dueue 。
  3. 相较于 queue,
  • 既可以从队尾压入数据(push_back),也可以从队首压入数据(push_front)。
  • 既可以从队尾弹出数据(pop_back),也可以从队尾弹出数据(pop_front)。

 

(SAW:Game Over!)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部