详解python数据结构之栈stack
作者:jianshuilan_0613 发布时间:2023-02-12 17:48:56
标签:python,栈,stack,数据结构
前言
栈(Stack)是一种运算受限的线性表。
按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。
文章内容包含:
(1)栈的基本格式
(2)压栈 push_stack
(3)出栈 pop_stack
(4)取栈顶 peek_stack
一、栈的基本格式
class Stack():
def __init__ (self,size):
self.size = size #栈空间大小
self.top = -1 #栈中进入一个数据 top 加 1
self.stack = []
def display_stack(self):#栈stack的打印
print(self.stack)
if __name__ == "__main__":
stack = Stack(5) #设定栈空间
stack.display_stack() #打印栈数据
二、进栈与压栈 push_stack
class Stack():
def __init__ (self,size):
self.size = size
self.top = -1
self.stack = [] #进栈数据列表
def display_stack(self):
print(self.stack)
def push_stack(self,data):
if len(self.stack ) >= self.size: #当数据数量大于设置的空间,则栈溢出
print("stack over flow!")
return
self.stack.append(data) #没有栈溢出就将数据追加到列表中
self.top += 1 #栈中每增加一个数据就加 1
if __name__ == "__main__":
stack = Stack(5)
stack.push_stack(0)
stack.push_stack(1)
stack.push_stack(2)
stack.push_stack(3)
stack.push_stack(4)
stack.push_stack(5) #stack空间是 5,这里进栈数据时 6 个,即提示栈溢出stack over flow!
stack.display_stack()
执行结果:
三、出栈 pop_stack
class Stack():
def __init__ (self,size):
self.size = size
self.top = -1
self.stack = [] #进栈数据列表
def display_stack(self):
print(self.stack)
def push_stack(self,data):
if len(self.stack ) >= self.size:
print("stack over flow!")
return
self.stack.append(data)
self.top += 1
def pop_stack(self):
if self.top <= -1: #当top小于等于初始值 -1 时说明stack数据列表为空
print("stack is empty!")
return
ret = self.stack.pop() #stack数据列表不为空就取出最后进的值,列表数据数量就少一个
self.top -= 1
return ret
if __name__ == "__main__":
stack = Stack(5)
stack.push_stack(0)
stack.push_stack(1)
stack.push_stack(2)
stack.push_stack(3)
stack.push_stack(4)
stack.display_stack()
#进栈数据有 5 个,出栈函数调用了 6 次,就出现了提示stack is empty!
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
执行结果:
四、取栈顶 peek_stack
class Stack():
def __init__ (self,size):
self.size = size
self.top = -1
self.stack = []
def display_stack(self):
print(self.stack)
def push_stack(self,data):
if len(self.stack ) >= self.size:
print("stack over flow!")
return
self.stack.append(data)
self.top += 1
def peek_stack(self):
if self.top == -1: #当栈内没有数据时 提示 stack is empty!
print("stack is empty!")
return
peek = self.stack[self.top] #栈不为空时,将栈顶的数据提取出来
return peek
if __name__ == "__main__":
stack = Stack(5)
stack.push_stack(0)
stack.push_stack(1)
stack.push_stack(2)
stack.push_stack(3)
stack.push_stack(4)
stack.push_stack(5)
stack.display_stack()
peek = stack.peek_stack()
print(peek)
执行结果:
来源:https://blog.csdn.net/jianshuilan_0613/article/details/116426804
0
投稿
猜你喜欢
- 学习WEB标准的朋友一般都是从学习CSS开始,为什么呢?因为CSS是一种很有意思的语言,它能让我们的网页千变万化。也许我们一开始的接触只是因
- 为什么需要优雅关闭什么叫优雅关闭?先说不优雅关闭,就是什么都不管,强制关闭进程,这会导致有些正在处理中的请求被强行中断这样做有什么问题?用户
- 虽然现在有许多网页制作工具能让您轻松地完成工作,但如果使用HTML则可以得到更大控制权,下面介绍几个小技巧。1.使用语句来控制文字排版比用好
- 在文章《用CSS实现柱状图(Bar Graph)的方法总结与比较(三)》中我强调说不同浏览器对于相同元素的默认样式并不一致,这也是为什么我们
- 本文实例讲述了Python中逗号的三种作用。分享给大家供大家参考。具体分析如下:最近研究python 遇到个逗号的问题 一直没弄
- 本篇文章适合css新手学习,对于已经掌握了css的朋友们也可以通过本片文章来复习知识。作者通过实践,认为在有些情况下css的代码是可以更加简
- 使用PDB的方式有两种:1. 单步执行代码,通过命令 python -m pdb xxx.py 启动脚本,进入单步执行模式 pdb
- 挖坟 交互设计(Interaction Design)产生于二十世纪八十年代,在1984年一次设计会议上,大名鼎鼎的英国交互设计师比尔·莫格
- 相信大家都做过九宫格的游戏,规则是要求填数字1-9在九个方格内,使横竖斜相加和相等。只填九个那可能有些简单,但是填25个,填49个,81个等
- 主要内容所谓RPC,是远程过程调用(Remote Procedure Call)的简写,网上解释很多,简单来说,就是在当前进程调用其他进程的
- 由于Internet的历史原因,apin负责整个网络IP的整体规划以及北美区
- 设计中文网站的朋友都会有这样的体会,Dreamweaver功能虽然强大,但要按照中文的行文习惯实现每个
- Application对象 Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保
- 工作中偶尔需要做客流分析,用pyplot 库绘图。一般情况下, x 轴刻度默认显示为数字。例如:我希望x 轴刻度显示为星期日期。查询pypl
- 今天调试某页面样式,发现chrome下出现问题,但是同样基于webkit引擎的safari没有问题,很是郁闷。于是寻找针对google ch
- 我就废话不多说了,大家还是直接看代码吧!#先定义两个矩阵X=np.array([[1,2104,5,1,45],[1,1416,3,2,40
- 比较喜欢python的装饰器, 试了下一种用法,通过装饰器来传递sql,并执行返回结果这个应用应该比较少为了方便起见,直接使用了ironpy
- 开源监控系统 Prometheus 集成了跟踪多种类型的时间序列数据,但如果没有集成你想要的数据,那么很容易构建一个。一个经常使用的例子使用
- PHP simplexml_load_string() 函数实例转换形式良好的 XML 字符串为 SimpleXMLElement 对象,然
- 本文实例为大家分享了Python实现简单猜数字游戏的具体代码,供大家参考,具体内容如下一、需求分析编写一个猜数字游戏,游戏规则:计算机给出一