數據結構-05-隊列(Queue)

##Queue - 隊列 Queue 是一個 **FIFO(先進先出)**的數據結構,併發中使用較多,能夠安全地將對象從一個任務傳給另外一個任務。python

Queue 和 Stack 在 Python 中都是有* list ,[] *實現的。 在python 中list是一個dynamic array, 能夠經過append在list的尾部添加元素, 經過**pop()**在list的尾部彈出元素實現Stack的FILO, 若是是pop(0)則彈出頭部的元素實現Queue的FIFO。api

示例:數組

queue = []  # same as list()
size = len(queue)
queue.append(1)
queue.append(2)
queue.pop(0) # return 1
queue[0] # return 2 examine the first element

###Priority Queue - 優先隊列 應用程序經常須要處理帶有優先級的業務,優先級最高的業務首先獲得服務。所以優先隊列這種數據結構應運而生。優先隊列中的每一個元素都有各自的優先級,優先級最高的元素最早獲得服務;優先級相同的元素按照其在優先隊列中的順序獲得服務。安全

優先隊列可使用數組或鏈表實現,從時間和空間複雜度來講,每每用二叉堆來實現。數據結構

Python 中提供heapq的lib來實現 priority queue. 提供push和pop兩個基本操做和heapify初始化操做.併發

輸入圖片說明

###Deque - 雙端隊列 雙端隊列(deque,全名double-ended queue)可讓你在任何一端添加或者移除元素,所以它是一種具備隊列和棧性質的數據結構app

Python Python 的list就能夠執行相似於deque的操做, 可是效率會過於慢。 爲了提高數據的處理效率, 一些高效的數據結構放在了collections中。 在collections 中提供了deque的類, 若是須要屢次對list執行頭尾元素的操做, 請使用deque。code

dq = collections.deque();

輸入圖片說明

相關文章
相關標籤/搜索