- 概念:deque(也稱為雙端佇列)是與佇列類似的項的有序集合。它有兩個端部,首部和尾部,並且項在集合中保持不變。
- 特性:deque 特殊之處在於新增和刪除項是非限制性的。可以在前面或後面新增新項。同樣,可以從任一端移除現有項。在某種意義上,這種混合線性結構提供了單個資料結構中的棧和佇列的所有能力。
- 注意:即使 deque 可以擁有棧和佇列的許多特性,它不需要由那些資料結構強制的 lifo 和 fifo 排序。這取決於你如何持續新增和刪除操作。
- 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 中的項數。它不需要引數,並返回乙個整數。
classdequeue():
def__init__
(self):
self.items =
defaddfont(self,item):
defaddrear(self,item):
self.items.insert(0,item)
defisempty(self):
return self.items ==
defremovefont(self):
ifself.isempty():
return
none
else
:
return
self.items.pop(0)
defremoverear(self):
ifself.isempty():
return
none
else
:
return
self.items.pop()
defsize(self):
return len(self.items)
六 基本資料結構 雙端佇列(Deque)
6.基本資料結構 雙端佇列 deque 一.雙端佇列 deque 概念 deque 也稱為雙端佇列 是與佇列類似的項的有序集合。它有兩個端部,首部和尾部,並且項在集合中保持不變。特性 deque 特殊之處在於新增和刪除項是非限制性的。可以在前面或後面新增新項。同樣,可以從任一端移除現有項。在某種意義...
雙端佇列之單調佇列 基本資料結構
看到題目我們可以從題目中獲取部分關鍵資訊,首先它時要求給定的區域時最小的,其次又是區間最優,通過最優我們可以想到單調性,切記 我們這裡的單調條件就是 名畫種類遞增 廢話不多說,貼上 include include using namespace std const int n 1e6 100 con...
資料結構 佇列 雙端佇列
佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為對頭。佇列不允許在中間部位進行操作。假設佇列是q 那麼a1就是對頭元素,而an是隊尾元素。這樣我們就可...