python栈和队列
2022/1/30 11:04:21
本文主要是介绍python栈和队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。
目录
一、栈和队列的概念
1、栈
2、队列
二、python中的LifoQueue(其实也是所谓的后进先出队列)
三、python自行搭建栈
1、初始化
2、判断栈是否为空
3、进栈
4、出栈
5、栈的长度
6、输出栈顶元素但不弹出
7、具体调用
三、python中的Queue
四、python自行搭建队列
1、初始定义
2、判断队列是否为空
3、输出队列长度
4、入队
5、出队
6、获取队首元素
7、具体调用
一、栈和队列的概念
1、栈
简单来说,栈也是线性表的一种。它只允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
进栈:向一个栈插入新元素,它是把新元素放到栈顶元素的上面,变成新的栈顶元素;
出栈:从一个栈删除元素,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
2、队列
队列也是一种一种线性表。
特点:
(1)队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。
(2)在队尾添加元素,在队头删除元素。
二、python中的LifoQueue(其实也是所谓的后进先出队列)
python具有实现栈的数据结构,是queue库中的LifoQueue。接下来让我们来看看它的几个相关应用。
from queue import LifoQueue stack = LifoQueue() for i in range(5): stack.put(i) #进栈 for i in range(5): print(stack._get()) #出栈
首先从queue库中导入LifoQueue,put(data)是进栈,_get()是出栈。
此外队列除了传统的先进先出,还有先进后出(就类似栈),还有优先级队列(PriorityQueue),他们都是从先进先出改进而来的。
三、python自行搭建栈
1、初始化
class Stack: def __init__(self): self.data = []
2、判断栈是否为空
def isEmpty(self): #判断栈是否为空 return not self.data
3、进栈
def push(self,data): #进栈 self.data.append(data)
4、出栈
def pop(self): #弹出栈顶元素(出栈) return self.data.pop()
5、栈的长度
def size(self): #输出栈的大小 return len(self.data)
6、输出栈顶元素但不弹出
def searchtop(self): #输出栈顶元素(但未弹出) return self.data[-1]
7、具体调用
stack = Stack() for i in range(5): stack.push(i) print(stack.size()) print(stack.searchtop()) for i in range(5): print(stack.pop()) print(stack.isEmpty())
三、python中的Queue
python具有实现栈的数据结构,是queue库中的Queue。
首先我们从queue库中调用Queue
from queue import Queue q = Queue()
然后很遗憾,开始报错
cannot import name 'Queue' from partially initialized module 'queue' (most likely due to a circular import)
后来发现原来是因为我把文件名定义成queue.py的缘故,和queue库重名了,所以换个文件件名就没事了。
for i in range(5): q.put(i) for i in range(5): print(q.get())
和LifoQueue类似的,put(data)入队,get()出队
四、python自行搭建队列
1、初始定义
class Queuepy: def __init__(self): self.queue = []
2、判断队列是否为空
def isEmpty(self): #判断队列是否为空 return not self.queue
3、输出队列长度
def size(self): #输出队列长度 return len(self.queue)
4、入队
def joinqueue(self,data): #入队(队尾) self.queue.append(data)
5、出队
def outofqueue(self): #出队(队头) l = len(self.queue) if l == 0: print("The queue is None") else: a = self.queue[0] q = [] for i in range(l-1): q.append(self.queue[i+1]) self.queue = q return a
6、获取队首元素
def getleader(self): #获取队头 return self.queue[0]
7、具体调用
k = Queuepy() for i in range(5): k.joinqueue(i) print(k.isEmpty()) print(k.size()) print(k.getleader()) for i in range(5): print(k.outofqueue()) print(k.isEmpty())
欢迎大家在评论区批评指正,谢谢大家~
这篇关于python栈和队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南
- 2024-10-30Python编程入门指南
- 2024-10-30Python量化交易学习:新手入门指南
- 2024-10-30Python股票自动化交易实战入门教程
- 2024-10-29Python股票自动化交易教程:新手入门指南