在python中,列表既可以作為棧使用,又可以作為佇列使用。
棧:後進先出
stack=[1,2,3]入棧,以列表尾部為棧頂
print(stack.pop()) #
出棧 4
print(stack) #
[1, 2, 3]
佇列:先進先出
from collections importdeque
list=[1,2,3]
queue=deque(list) #
將列表轉換為佇列
入隊,新增到佇列尾部
print(queue.popleft()) #
出隊,彈出並返回隊首元素
print(queue) #
deque([2, 3, 0])
#把列表作為佇列使用,效率不高,因為出隊時要移動後面所有的元素。
deque 是雙邊佇列,同時具有棧和佇列的性質,可進行棧、佇列相關的操作。並且還在在 list 的基礎上增加了移動、旋轉和增刪等操作。
from collections import deque #需要匯入模組
list=[1,2,3]
deque=deque(list) #
將列表轉換為deque
新增到尾部
print(deque) #
deque([1, 2, 3, 0])
#新增到首部
print(deque) #
deque([0, 1, 2, 3, 4])
print(deque.pop()) #
彈出並返回最後乙個元素 4
print(deque) #
deque([0, 1, 2, 3])
print(deque.popleft()) #
彈出並返回左邊第乙個元素 0
print(deque) #
deque([1, 2, 3])
from collections import deque #需要匯入模組
list=[1,2,3]
deque=deque(list) #
將列表轉換為deque
#作為棧使用:方式一
入棧print(deque) #
deque([1, 2, 3, 4])
print(deque.pop()) #
出棧 4
print(deque) #
deque([1, 2, 3])
#作為棧使用:方式二
入棧print(deque) #
deque([0,1, 2, 3])
print(deque.pop()) #
出棧 3
print(deque) #
deque([0, 1, 2])
#只要實現後進先出即可
from collections import deque #需要匯入模組
list=[1,2,3]
deque=deque(list) #
將列表轉換為deque
#作為佇列使用:方式一
入隊print(deque) #
deque([1, 2, 3, 4])
print(deque.popleft()) #
出隊 1
print(deque) #
deque([2, 3, 4])
from collections import deque #需要匯入模組
list= #
空列表deque=deque(list)
#作為佇列使用:方式二
入隊print(deque) #
deque([2, 1])
print(deque.pop()) #
出隊 1
print(deque) #
deque([2])
#這種方式需要list是空的
#只要實現先進先出即可
實現棧、佇列時,一般是使用空列表。
棧 佇列的Python實現
棧和佇列是特殊的線性表,只不過我們認為的規定它的操作方法。我們把先入後出的資料結構稱為棧,先進先出的資料結構成為佇列。python實現棧的一些基本操作的 class stack object 棧 def init self self.items defis empty self 判斷是否為空 ret...
Python實現棧 佇列
目錄2.佇列的python實現 本文將使用python實現資料結構中的棧 佇列 有關棧 佇列的理論原理請參考 資料結構與演算法 3 棧和佇列 以列表的形式簡單實現棧 棧 先進後出 class stack def init self self.stack 初始化 def is empty self r...
佇列實現棧棧實現佇列
佇列是一種先進先出的資料結構,要想實現先進後出,需加乙個輔助佇列進行資料的來回倒 引用交換 從而實現棧結構。例如 5 4 3 2 1 用乙個輔助佇列裝 4 3 2 1,把5彈出,在把 4 3 2 1放回原佇列,如此反覆可變成5 4 3 2 1的棧結構。棧是一種先進後出的資料結構,要想實現先進先出,同...