六 基本資料結構 雙端佇列(Deque)

2022-05-10 01:24:11 字數 1410 閱讀 4591

- 概念: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 中的項數。它不需要引數,並返回乙個整數。

class

dequeue():

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是隊尾元素。這樣我們就可...