数据结构与算法 / 队列(queue)
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法 / 队列(queue)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
@time 2019-08-04
@author Ruo_Xiao
dueue,雙端隊列。 在 STL 中,queue 的底層實現(xiàn)就是 dueue 。 相較于 queue,
一、定義
? ? ? ? 隊列是一種操作受限的線性表,只能從一端插入從另一端彈出的數(shù)據(jù)結構。
二、特性
? ? ? ? 先進者先出,后進者后出。
三、分類
1、基于數(shù)組實現(xiàn)的隊列,名為順序隊列。實現(xiàn)一個有界隊列。
2、基于鏈表實現(xiàn)的隊列,名為鏈式隊列。實現(xiàn)一個無界隊列。
3、若隊列收尾相連,則該隊列名為循環(huán)隊列。
4、阻塞隊列,在隊列中增加了阻塞操作的功能。
- 當隊列為空,從隊頭取出元素,會堵塞在那里,直到有元素入隊,該操作才取出元素并返回。
- 當隊列為滿,向隊尾插入元素,會堵塞在那里,直到有元素出隊,該操作才插入元素并返回。
5、并發(fā)隊列,線程安全的隊列。就是在 enqueue 和 dequeue 中加入鎖。
四、應用場景
1、線程池中,若線程不足,請求操作可以暫存在隊列中,依次等待線程池中有線程。
2、消息隊列,用于兩個模塊解耦、削峰、異步等操作。
五、實現(xiàn)(C++)
github
六、拓展
- 既可以從隊尾壓入數(shù)據(jù)(push_back),也可以從隊首壓入數(shù)據(jù)(push_front)。
- 既可以從隊尾彈出數(shù)據(jù)(pop_back),也可以從隊尾彈出數(shù)據(jù)(pop_front)。
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的数据结构与算法 / 队列(queue)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/Cpp / extern 关键字
- 下一篇: Cpp 对象模型探索 / 编译器为对象创