Python 棧、隊列的實現


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

 

把列表作為棧使用

棧:后進先出

stack=[1,2,3]
stack.append(4)  #入棧,以列表尾部為棧頂
print(stack.pop())  #出棧  4
print(stack)  #[1, 2, 3]

 

 

把列表作為隊列使用

隊列:先進先出

from collections import deque
list=[1,2,3]
queue=deque(list)  #將列表轉換為隊列
queue.append(0)  #入隊,添加到隊列尾部
print(queue.popleft())  #出隊,彈出並返回隊首元素
print(queue)  #deque([2, 3, 0])

#把列表作為隊列使用,效率不高,因為出隊時要移動后面所有的元素。

 

 

deque

deque 是雙邊隊列,同時具有棧和隊列的性質,可進行棧、隊列相關的操作。並且還在在 list 的基礎上增加了移動、旋轉和增刪等操作。

from collections import deque  #需要導入模塊
list=[1,2,3]
deque=deque(list)  #將列表轉換為deque

deque.append(4)  #添加到尾部
print(deque)  #deque([1, 2, 3, 0])

deque.appendleft(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])

 

 

deque實現棧:

from collections import deque  #需要導入模塊
list=[1,2,3]
deque=deque(list)  #將列表轉換為deque

#作為棧使用:方式一
deque.append(4)  #入棧
print(deque)  #deque([1, 2, 3, 4])
print(deque.pop())  #出棧  4
print(deque)  #deque([1, 2, 3])

#作為棧使用:方式二
deque.appendleft(0)  #入棧
print(deque)  #deque([0,1, 2, 3])
print(deque.pop())  #出棧  3
print(deque)  #deque([0, 1, 2])

#只要實現后進先出即可

 

 

deque實現隊列:

from collections import deque  #需要導入模塊
list=[1,2,3]
deque=deque(list)  #將列表轉換為deque

#作為隊列使用:方式一
deque.append(4)  #入隊
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)

#作為隊列使用:方式二
deque.appendleft(1)  #入隊
deque.appendleft(2)  
print(deque)  #deque([2, 1])
print(deque.pop())  #出隊  1
print(deque)  #deque([2])

#這種方式需要list是空的

#只要實現先進先出即可

 

 

實現棧、隊列時,一般是使用空列表[]。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM