Python 棧 佇列的實現

2021-10-05 02:34:11 字數 2105 閱讀 8352

在python中,列表既可以作為棧使用,又可以作為佇列使用。

棧:後進先出

stack=[1,2,3]

入棧,以列表尾部為棧頂

print(stack.pop()) #

出棧 4

print(stack) #

[1, 2, 3]

佇列:先進先出

from collections import

deque

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的棧結構。棧是一種先進後出的資料結構,要想實現先進先出,同...