一.雙端隊列(Deque)
- 概念:deque(也稱為雙端隊列)是與隊列類似的項的有序集合。它有兩個端部,首部和尾部,並且項在集合中保持不變。
- 特性:deque 特殊之處在於添加和刪除項是非限制性的。可以在前面或后面添加新項。同樣,可以從任一端移除現有項。在某種意義上,這種混合線性結構提供了單個數據結構中的棧和隊列的所有能力。
- 注意:即使 deque 可以擁有棧和隊列的許多特性,它不需要由那些數據結構強制的 LIFO 和 FIFO 排序。這取決於你如何持續添加和刪除操作。
二.Python實現Deque
- Deque的抽象數據類型定義:Deque的抽象數據類型應該由以下結構和操作定義。其中元素可以從首部或尾部的任一端添加和移除。Deque操作如下:
-
- Deque() 創建一個空的新 deque。它不需要參數,並返回空的 deque。
- addFront(item) 將一個新項添加到 deque 的首部。它需要 item 參數 並不返回任何內容。
- addRear(item) 將一個新項添加到 deque 的尾部。它需要 item 參數並不返回任何內容。
- removeFront() 從 deque 中刪除首項。它不需要參數並返回 item。deque 被修改。
- removeRear() 從 deque 中刪除尾項。它不需要參數並返回 item。deque 被修改。
- isEmpty() 測試 deque 是否為空。它不需要參數,並返回布爾值。
- size() 返回 deque 中的項數。它不需要參數,並返回一個整數。
class Deque: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def addFront(self, item): self.items.append(item) def addRear(self, item): self.items.insert(0,item) def removeFront(self): return self.items.pop() def removeRear(self): return self.items.pop(0) def size(self): return len(self.items)