
【計】 double-end queue
both; double; even; twin; two; twofold
【化】 dyad
【醫】 amb-; ambi-; ambo-; bi-; bis-; di-; diplo-; par
carry; end; fringe; point; proper; upright
【計】 end
【醫】 extremitas; extremity; telo-; terminal; terminatio; termination; tip
alignment
【計】 Q; queue; queueing
雙端隊列(雙端隊列,英文:double-ended queue,縮寫為deque)是一種線性數據結構,允許在隊列的頭部(front)和尾部(rear)進行元素的插入與删除操作。它結合了棧(stack)和隊列(queue)的特性,支持先進先出(FIFO)和先進後出(LIFO)兩種模式。
ArrayDeque
和Python的collections.deque
。不同編程語言對雙端隊列的實現存在差異。例如,C++ STL的std::deque
基于分塊數組,而Python的deque
采用雙向鍊表結構,這導緻兩者在中間元素訪問性能上存在區别(前者O(1),後者O(n))。
雙端隊列(Deque) 是一種允許在兩端進行插入和删除操作的線性數據結構,全稱為Double-Ended Queue。它結合了隊列(先進先出)和棧(後進先出)的特性,具有高度的靈活性。
操作自由性
addFirst
)、删除(removeFirst
)或查看元素。addLast
)、删除(removeLast
)或查看元素。實現方式
數據結構 | 插入位置 | 删除位置 | 典型應用 |
---|---|---|---|
隊列 | 後端 | 前端 | 任務調度、BFS |
棧 | 棧頂(後端) | 棧頂(後端) | 函數調用、表達式求值 |
雙端隊列 | 前端或後端均可 | 前端或後端均可 | 滑動窗口、撤銷操作 |
滑動窗口算法
在滑動窗口最大值問題中,雙端隊列可高效維護當前窗口内的極值。
撤銷與重做功能
如文本編輯器中,用雙端隊列存儲操作記錄,支持兩端操作以實現撤銷(Undo)和重做(Redo)。
多級調度算法
某些操作系統中,雙端隊列用于管理不同優先級的任務,允許從兩端調整任務順序。
0-1 BFS優化
在圖遍曆中,若邊權僅為0或1,雙端隊列可将時間複雜度優化至 $O(V+E)$(普通隊列為 $O(E log V)$)。
collections.deque
,支持線程安全操作。Deque
接口(實現類如 ArrayDeque
、LinkedList
)。std::deque
,基于分塊數組實現,支持隨機訪問。雙端隊列通過兩端的自由操作,平衡了功能與效率,是算法設計和工程實踐中常用的基礎數據結構。
巴特利氏鎮靜劑磁麻酸存儲體控制器碘蓖麻油酸鈣氡含量多肋切斷膈切開術分式規劃工作單國外公法紅黴素醋硬脂酸鹽磺酰溴SO2Br2結核菌蠟計算機指令鍊路站淋巴母細胞立式降膜冷凝器流程框圖内皮分解的牽涉茜素指示劑竊盜者全局乘法運算散光測量法收到松開隨身用具所有權過戶填料片通用爐黑退貨