Python之棧和佇列的應用

2021-09-21 13:01:56 字數 2773 閱讀 6252

插入操作都是限定在表的尾部

棧和佇列的管理模式是相同的

都可以通過順序結構和鏈式結構實現

棧:【stack】只能在表的一端進行插入或刪除操作的限定表,即在表尾進行操作,用於表示式的轉換和求和,函式的遞迴和呼叫【函式入棧和出棧】;

佇列:【queue】只能在表的一端進行插入,在表的另一端進行刪除的線性表,即在表尾插入,在表頭刪除,用於計算機中各種資源的管理

mystack = 

print(mystack) #[10]

print(mystack) #[10,20]

print(mystack) #[10,20,30]

print(mystack) #[10,20,30,40]

#出棧【從棧中取出資料,刪除操作】:pop

mystack.pop()

print(mystack) #[10, 20, 30]

mystack.pop()

print(mystack) #[10, 20]

mystack.pop()

print(mystack) #[10]

mystack.pop()

print(mystack) #

import collections

#建立列表

queue = collections.deque([10,20])

print(queue) #deque([10,20])

print(queue) #deque([10, 20, 30])

print(queue) #deque([10, 20, 30, 40])

print(queue) #deque([10, 20, 30, 40, 50])

#出隊【刪除資料】:popleft,在表頭操作

queue.popleft()

print(queue) #deque([20,30, 40, 50])

queue.popleft()

print(queue) #deque([30, 40, 50])

queue.popleft()

print(queue) #deque([40, 50])

運用棧模擬遞迴遍歷目錄【深度遍歷】
import os

#運用棧模擬遞迴遍歷目錄【深度遍歷】

#思路:將路徑新增到棧中,然後又從棧中取出路徑,判斷,如果是目錄,則再次新增到棧中

def getall(path):

#定義乙個空棧

stack =

#將初始指定路徑新增到棧中

while len(stack) != 0:

#從棧中取出路徑

dirpath = stack.pop()

#獲取該目錄下所有的內容【資料夾和檔案】

filelist = os.listdir(dirpath)

#遍歷for filename in filelist:

#拼接路徑

filepath = os.path.join(dirpath,filename)

#判斷是否是目錄

if os.path.isfile(filepath):

print("目錄:",filename)

#如果是目錄,則將目錄新增到棧中

else:

print("檔案:",filename)

getall(r"e:\python學習\1py基礎\day10")

運用佇列模擬遞迴遍歷目錄【廣度遍歷】

#運用佇列模擬遞迴遍歷目錄【廣度遍歷】

import os

import collections

def getall1(path):

#建立乙個空的佇列

queue = collections.deque()

#進隊while len(queue) != 0:

#從佇列中取出路徑

dirpath = queue.popleft()

#獲取該目錄下所有的內容【資料夾和檔案】

filelist = os.listdir(dirpath)

#遍歷for filename in filelist:

#拼接路徑

filepath = os.path.join(dirpath,filename)

#判斷是否是目錄

if os.path.isfile(filepath):

print("目錄:",filename)

#如果是目錄,則將目錄新增到佇列中

else:

print("檔案:",filename)

getall1(r"e:\python學習\1py基礎\day10")

棧和佇列的綜合應用

迷宮問題。假設迷宮由m行n列構成,有乙個入口和乙個出口,入口座標為 1,1 出口座標為 m,n 試設計並驗證以下演算法 找出一條從入口通往出口的路徑,或報告乙個 無法通過 的資訊。1 用c語言實現順序儲存結構上佇列的基本操作,然後利用該佇列的基本操作找出迷宮的一條最短路徑。2 設計乙個二維陣列maz...

棧和佇列(二) 棧的應用舉例

一 數制轉換 十進位制數n和其它d進製數的轉換是計算機實現計算的基本問題,其解決方法很多,其中乙個簡單的演算法是基於下列原理 n n div d d n mod d。其中 div為整除運算,mod為求餘運算。例 1348 10 2504 8,其運算過程如下 n n div 8 n mod 8 134...

python棧和佇列

類的定義 設計類 類名 屬性 行為 定義乙個女朋友 屬性 身高170,年齡20,性別 女 膚色 白 行為 中的定義 格式 class 類名 父類列表 屬性1屬性2 行為1 方法 行為2乙個類是以class關鍵字開始的 類名需要遵循識別符號命名規則,見名知意 首字母大寫 屬性需要遵循識別符號命名規則,...