摘要:隊列是一種先進先出,的數據結構。隊列的另外一項重要操作是讀取隊頭的元素。通常的操作定義一個空隊列,無參數,返回值是空隊列。刪除隊列頭部的數據項,不需要參數,返回值是被刪除的數據,隊列本身有變化。
隊列是一種列表,不同的是隊列只能在隊尾插入元素,在隊首刪除元素。隊列用于存儲按順序排列的數據,先進先出,這點和棧不一樣,在棧中,最后入棧的元素反而被優先處理。可以將隊列想象成在銀行前排隊的人群,排在最前面的人第一個辦理業務,新來的人只能在后面排隊,直到輪到他們為止。
隊列是一種先進先出(First-In-First-Out,FIFO)的數據結構。隊列被用在很多地方,比如提交操作系統執行的一系列進程、打印任務池等,一些仿真系統用隊列來模擬銀行或雜貨店里排隊的顧客。
隊列的兩種主要操作是:向隊列中插入新元素和刪除隊列中的元素。插入操作也叫做入隊,刪除操作也叫做出隊。入隊操作在隊尾插入新元素,出隊操作刪除隊頭的元素。
隊列的另外一項重要操作是讀取隊頭的元素。這個操作叫做peek()。該操作返回隊頭元素,但不把它從隊列中刪除。除了讀取隊頭元素,我們還想知道隊列中存儲了多少元素,可以使用size()滿足該需求。
queue通常的操作:
Queue() 定義一個空隊列,無參數,返回值是空隊列。 enqueue(item) 在隊列尾部加入一個數據項,參數是數據項,無返回值。 dequeue() 刪除隊列頭部的數據項,不需要參數,返回值是被刪除的數據,隊列本身有變化。 isEmpty() 檢測隊列是否為空。無參數,返回布爾值。 size() 返回隊列數據項的數量。無參數,返回一個整數。
隊列操作舉例:
Queue Operation | Queue Contents | Return Value |
---|---|---|
q.isEmpty() | [] | True |
q.enqueue(4) | [4] | |
q.enqueue("dog") | ["dog",4] | |
q.enqueue(True) | [True,"dog",4] | |
q.size() | [True,"dog",4] | 3 |
q.isEmpty() | [True,"dog",4] | False |
q.enqueue(8.4) | [8.4,True,"dog",4] | |
q.dequeue() | [8.4,True,"dog"] | 4 |
q.dequeue() | [8.4,True] | "dog" |
q.size() | [8.4,True] | 2 |
Queue 類模擬:
class Queue: """模擬隊列""" def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def enqueue(self, item): self.items.insert(0,item) def dequeue(self): return self.items.pop() def size(self): return len(self.items)
以下是測試代碼:
q=Queue() q.isEmpty() q.enqueue("dog") q.enqueue(4) q=Queue() q.isEmpty() q.enqueue(4) q.enqueue("dog") q.enqueue(True)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44177.html
摘要:默認值為,指定為時代表可以阻塞,若同時指定,在超時時返回。當消費者線程調用意味著有消費者取得任務并完成任務,未完成的任務數就會減少。當未完成的任務數降到,解除阻塞。 學習契機 最近的一個項目中在使用grpc時遇到一個問題,由于client端可多達200,每個端口每10s向grpc server發送一次請求,server端接受client的請求后根據request信息更新數據庫,再將數據...
摘要:每當我們收到一條消息,這個回調函數就被皮卡庫調用。接下來,我們需要告訴這個特定的回調函數應該從我們的隊列接收消息為了讓這個命令成功,我們必須確保我們想要訂閱的隊列存在。生產者計劃將在每次運行后停止歡呼我們能夠通過發送我們的第一條消息。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 介紹 RabbitMQ是一個消息代理:它接受和轉發消息。你...
摘要:在隊尾添加入一個元素,參數是數據項,無返回值。刪除隊首的元素,不需要參數,返回值是被刪除的元素,隊列本身有變化。列表用于隨機訪問和定長數據的操作,包括切片,而雙端隊列適用于在兩端壓入或彈出元素,索引但不包括切片的效率可能低于列表。 雙端隊列(Deque),是一種類似于隊列的元素的有序集合。它擁有兩端,隊首和隊尾,并且元素保持在當前的位置。雙端隊列的一個不同點就是,添加和刪除元素的位置不...
閱讀 2329·2021-11-24 10:33
閱讀 1394·2019-08-30 15:43
閱讀 3285·2019-08-29 17:24
閱讀 3495·2019-08-29 14:21
閱讀 2234·2019-08-29 13:59
閱讀 1748·2019-08-29 11:12
閱讀 2820·2019-08-28 18:00
閱讀 1861·2019-08-26 12:17