Python 棧和佇列及其模擬遞迴遍歷目錄

2021-10-23 03:12:22 字數 2385 閱讀 4997

本文主要概括了棧和佇列的定義及其相應的方法,總結了如何向棧和佇列中存資料和取資料。最後利用棧是一種先進後出的資料結構,而佇列是一種先進先出的資料結構的特徵,用棧和佇列來模擬遞迴遍歷目錄。

模擬棧結構:先進後出

stack=佇列結構:先進先出

import collections

queue= collections . deque()用棧和佇列模擬遞迴遍歷目錄。

在這裡隨意定義乙個假定的目錄如下,作為模擬遞迴遍歷的目錄

text1中的內容如下:

text2中的內容如下:

text3中的內容如下:

#處理棧,當棧為空時迴圈結束

while

len(stack)!=0

:#從棧裡取出資料

dirpath=stack.pop(

)#目錄下所有檔案

filelist=os.listdir(dirpath)

#處理每乙個檔案,如果是普通檔案就列印出來,如果是目錄則將該目錄的位址壓棧

for filename in filelist:

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

if os.path.isdir(fileabspath)

:print

("目錄"

+filename)

#是目錄就壓棧

else

:#列印普通檔案

print

("普通檔案"

+filename)

getalldirde(r"e:\python test\假定目錄(實驗用)"

)以上**的執行結果為:

目錄text1

目錄text2

目錄text3

普通檔案效能測試.py

普通檔案31.txt

普通檔案32.txt

普通檔案33.txt

普通檔案21.txt

普通檔案22.txt

普通檔案23.txt

普通檔案1.txt

普通檔案2.txt

普通檔案3.txt

import os

import collections

defgetalldirqu

(path)

: queue=collections.deque(

)#進隊

while

len(queue)!=0

:#出隊資料

dirpath=queue.popleft(

)#找出所有的檔案

filelist=os.listdir(dirpath)

for filename in filelist:

#絕對路徑

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

#判斷是否是目錄,是目錄,進隊,不是則列印

if os.path.isdir(fileabspath)

:print

("目錄"

+filename)

else

:print

("普通檔案"

+filename)

getalldirqu(r"e:\python test\假定目錄(實驗用)"

)

以上**的執行結果為:

目錄text1

目錄text2

目錄text3

普通檔案效能測試.py

普通檔案1.txt

普通檔案2.txt

普通檔案3.txt

普通檔案21.txt

普通檔案22.txt

普通檔案23.txt

普通檔案31.txt

普通檔案32.txt

普通檔案33.txt

用棧模擬佇列和佇列模擬棧

棧 先進後出 filo 佇列 先進先出 fifo class myqueue 兩棧模擬佇列 def init self self.input self.output 進佇列 defpush self,x 出佇列 defpop self self.peek return self.output.pop...

python 列表結構模擬棧和佇列

1.棧的儲存方式是先進後出,具有push和pop的行為。佇列的儲存方式是先進先出 fifo 2.實現主要包括連續push pop棧頂和展示棧內元素三個方法。3.連續push採用raw input,以 作為結束標誌 展示元素以倒序依次展示的方式,用到了很重要的copy模組 import copy 彈出...

棧和佇列 佇列及其儲存結構

佇列的順序儲存結構 1 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。2 與棧相反,佇列是一種先進先出的線性表.3 實現乙個佇列同樣需要順序表或鍊錶作為基礎。佇列即可用鍊錶實現,也可以用順序表實現,而棧一般用順序表實現,佇列用鍊錶實現,簡稱鏈佇列 typedef st...