阅读文本大概需要 6 分钟
写在前面
这两天咨询了下各位读者的意见,建议是在每一次分享时可以分享一些对应的练习题,之前也这样做过,慢慢地就消失了。所以之后会尽量给大家找一些对应的练习题,如果大家有好的练习题也可以告诉我一下。
今天要学习的内容是关于栈和队列的简单介绍,之后分别用递归函数、栈、队列对自己的目录文件进行深度遍历与广度遍历。
栈的介绍1
栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行,如同封底的容器一般,特点是先进后出。
# 模拟栈结构,先进后出
stack = []
print(stack) # []
# 压栈
stack.append("A")
stack.append("B")
stack.append("C")
# 出栈
p = stack.pop()
print(p) # C
print(stack) # ['A', 'B']
队列的介绍2
队列也是一种特殊的线性表。其特殊性在于限定一端插入而另一端删除数据元素(队尾进队头出),如同排队买票一般,特点是先进先出。
# 模拟队列,先进先出
import collections
# 创建队列
q = collections.deque()
print(q) # deque([])
# 进队
q.append("A")
q.append("B")
q.append("C") # deque(['A', 'B', 'C'])
print(q)
# 出队
p = q.popleft()
print(p) # A
print(q) # deque(['B', 'C'])
函数递归目录3
import os
p = r"C:\Users\Mark\PycharmProjects\Python"
def getAllDir(path, sp):
# 得到当前目录下所有的文件
fileList = os.listdir(path)
sp += " "
# 处理每一个文件
for fileName in fileList:
fileAbsPath = os.path.join(p, fileName)
# 判断是否是目录(用绝对路径)
if os.path.isdir(fileAbsPath):
print(sp + "目录", fileName)
# 递归调用
getAllDir(fileAbsPath, sp)
else:
print(sp + "普通文件:", fileName)
getAllDir(p, sp="")
队列之广度遍历4
广度遍历:1 是根目录 ,1 进栈处理之后,2 5 进栈,将 2 和 5 处理之后,依次处理 3 4 6 7,按照层级处理
# 广度遍历
import os
import collections
p = r"C:\Users\Mark\PycharmProjects\Python"
def getAllDirBe(p):
q = collections.deque()
q.append(p)
# 处理栈,当队列为空的时候结束循环
while len(q) != 0:
# 从队列里取出数据
dirPath = q.popleft()
# 目录下的所有文件
fileList = os.listdir(dirPath)
# 处理每一个文件,如果是文件打印,目录地址进队
for fileName in fileList:
fileAbsPath = os.path.join(dirPath, fileName)
# 判断是否是目录(用绝对路径)
if os.path.isdir(fileAbsPath):
print("目录:"+fileName)
q.append(fileAbsPath)
else:
print("普通文件:"+fileName)
getAllDirBe(p)
栈之深度遍历5
深度遍历:1 是根目录 ,1 进栈处理之后,2 5 进栈,将 2 目录下的全部处理完之后,开始处理 5 下面的
# 深度遍历
import os
p = r"D:\BaiduNetdiskDownload\Java\第1阶段\day01"
def getAllDirDe(p):
stack = []
stack.append(p)
# 处理栈,当栈为空的时候结束循环
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)
stack.append(fileAbsPath)
else:
print("普通文件:"+fileName)
getAllDirDe(p)
写在最后
最后给大家送波福利!如果你打算入手或着正在学习Python,欢迎加入我们一起学习。后台回复「Python」,获取到你想要的资源。同时我们组建了一个Python技术学习群,里面大佬与小白都有,有良好的学习氛围。想要进群学习的,加 Mark 微信「IMark950831」,备注「加群」,期待你的到来!
好了,今天的分享就到这了,觉得写得不错的,点赞转发支持下。