Python資料結構——佇列
阿新 • • 發佈:2018-12-23
佇列是一種列表,不同的是佇列只能在隊尾插入元素,在隊首刪除元素。佇列用於儲存按順序排列的資料,先進先出,這點和棧不一樣,在棧中,最後入棧的元素反而被優先處理。可以將佇列想象成在銀行前排隊的人群,排在最前面的人第一個辦理業務,新來的人只能在後面排隊,直到輪到他們為止。
佇列是一種先進先出(First-In-First-Out,FIFO)的資料結構。佇列被用在很多地方,比如提交作業系統執行的一系列程序、列印任務池等,一些模擬系統用佇列來模擬銀行或雜貨店裡排隊的顧客。
佇列的兩種主要操作是:向佇列中插入新元素和刪除佇列中的元素。插入操作也叫做入隊,刪除操作也叫做出隊。入隊操作在隊尾插入新元素,出隊操作刪除隊頭的元素。
佇列的另外一項重要操作是讀取隊頭的元素。這個操作叫做peek()。該操作返回隊頭元素,但不把它從佇列中刪除。除了讀取隊頭元素,我們還想知道佇列中儲存了多少元素,可以使用size()滿足該需求。
queue通常的操作:
12345 | 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 類模擬:
12345678910111213141516 | classQueue:"""模擬佇列"""def __init__(self):self.items=[]def isEmpty(self):returnself.items==[]def enqueue(self,item):self.items.insert(0,item)def dequeue(self):returnself.items.pop()def size(self):returnlen(self.items) |
以下是測試程式碼:
1234567891011 | q=Queue()q.isEmpty()q.enqueue('dog')q.enqueue(4)q=Queue()q.isEmpty()q.enqueue(4)q.enqueue('dog')q.enqueue(True) |