python雙端佇列的原理分析
概念
1、具有佇列和棧性質的資料結構。雙端佇列的要素可以從兩端彈出,限定插入和刪除操作在表的兩端進行。
雙端佇列可以在佇列的任何一端進出。
原理
雙端佇列是一種具有佇列和棧性質的資料結構。雙端佇列的元素可以從兩端彈出,有限的插入和刪除操作可以在佇列的兩端進行。
2、雙端佇列可以從佇列的兩端新增和刪除元素,可以在建立或例項雙端佇列時指定佇列的長度或大小。
當佇列滿了,我們可以反向刪除過期元素(從前刪除),然後在佇列的末尾新增新元素。
例項
# -- encoding: utf-8 -- # @time: 2021/4/18 11:49 # @Author: jsonLiu # @Email: xxxxxxxxx@qq.com # @file: deque # 雙端佇列 """ - Deque()建立一個空的雙端佇列。它不需要引數,且會返回一個空的雙端佇列。 - addFront(item)將一個元素新增到雙端佇列的前端。它接受一個元素作為引數,沒有返回值 - addRear (item)將一個元素新增到雙端佇列的後端。它接受一個元素作為引數,沒有返回值。 - popFront()從雙端佇列的前端移除一個元素。它不需要引數,且會返回一個元素,並修改雙端佇列的內容。 - popRear()從雙端佇列的後端移除一個元素。它不需要引數,且會返回一個元素,並修改雙端佇列的內容。 - isEmpty()檢查雙端佇列是否為空。它不需要引數,且會返回一個布林值。 - size()返回雙端佇列中元素的數目。它不需要引數,且會返回一個整數。 """ class Deque1: """假設雙端佇列的後端是列表位置0處""" def __init__(self): self.__list = [] def isEmpty(self): # return self.__list == [] return not self.__list def size(self): return len(self.__list) def add_front(self, item): """新增到雙端佇列前端""" self.__list.append(item) def add_rear(self, item): """新增到雙端佇列後端""" self.__list.insert(0, item) def pop_front(self): """從雙端佇列的前端移除一個元素""" return self.__list.pop(len(self.__list) - 1) # return self.__list.pop() def pop_rear(self): """雙端佇列的後端移除一個元素""" return self.__list.pop(0) class Deque2: """假設雙端佇列的前端是列表位置0處""" def __init__(self): self.__list = [] def isEmpty(self): # return self.__list == [] return not self.__list def size(self): return len(self.__list) def add_front(self, item): """新增到雙端佇列前端""" self.__list.insert(0, item) def add_rear(self, item): """新增到雙端佇列後端""" self.__list.append(item) def pop_front(self): """從雙端佇列的前端移除一個元素""" return self.__list.pop(0) def pop_rear(self): """雙端佇列的後端移除一個元素""" # return self.__list.pop() return self.__list.pop(len(self.__list) - 1) if __name__ == '__main__': d = Deque2() # d = Deque1() print(d.isEmpty()) # True d.add_rear(4) d.add_rear(3) d.add_front(2) d.add_front(1) print(d.size()) # 4 d.add_rear(5) print(d.pop_rear()) print(d.pop_front())
以上就是python雙端佇列的原理分析,希望對大家有所幫助。更多Python學習指路:
本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2894/viewspace-2829642/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ArrayDeque雙端佇列 使用&實現原理分析佇列
- 雙端佇列佇列
- 單調佇列雙端佇列佇列
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- PTA 雙端佇列 資料結構佇列資料結構
- 資料結構之「雙端佇列」資料結構佇列
- 佇列-單端佇列佇列
- ArrayDeque(JDK雙端佇列)原始碼深度剖析JDK佇列原始碼
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- Python佇列的三種佇列實現方法Python佇列
- Python教程:Python內建資料結構之雙向佇列!Python資料結構佇列
- Python內建資料結構之雙向佇列Python資料結構佇列
- LeetCode題解:641. 設計迴圈雙端佇列,使用佇列,JavaScript,詳細註釋LeetCode佇列JavaScript
- 【Python】rq佇列的使用Python佇列
- Python培訓:Python內建資料結構之雙向佇列Python資料結構佇列
- 面經手冊 · 第9篇《佇列是什麼?什麼是雙端佇列、延遲對列、阻塞佇列,全是知識盲區!》佇列
- 前端學習 資料結構與演算法 快速入門 系列 —— 佇列和雙端佇列前端資料結構演算法佇列
- python佇列QueuePython佇列
- rabbitmq訊息佇列原理MQ佇列
- Python培訓教程:Python內建資料結構之雙向佇列Python資料結構佇列
- python3 佇列的使用Python佇列
- huawei0821筆試第二題筆記:雙端佇列deque筆試筆記佇列
- Python技術分享:內建資料結構之雙向佇列Python資料結構佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 全網最適合入門的物件導向程式設計教程:38 Python常用複合資料型別-使用列表實現堆疊、佇列和雙端佇列物件程式設計Python資料型別佇列
- 025 通過連結串列學Rust之使用棧實現雙端佇列Rust佇列
- 025 透過連結串列學Rust之使用棧實現雙端佇列Rust佇列
- laravel原始碼分析-佇列QueueLaravel原始碼佇列
- Java 阻塞佇列(BlockingQueue)的內部實現原理Java佇列BloC
- 簡析Python中的四種佇列Python佇列
- python的queue佇列獲取資料Python佇列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 佇列、阻塞佇列佇列
- python中佇列簡單使用Python佇列
- Python使用RocketMQ(訊息佇列)PythonMQ佇列
- 基於迴圈佇列的BFS的原理及實現佇列