插入操作都是限定在表的尾部棧和佇列的管理模式是相同的
都可以通過順序結構和鏈式結構實現
棧:【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關鍵字開始的 類名需要遵循識別符號命名規則,見名知意 首字母大寫 屬性需要遵循識別符號命名規則,...