网络编程
位置:首页>> 网络编程>> Python编程>> 详解python数据结构之栈stack

详解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()

执行结果:

详解python数据结构之栈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()

执行结果:

详解python数据结构之栈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)

执行结果:

详解python数据结构之栈stack

来源: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实现简单猜数字游戏的具体代码,供大家参考,具体内容如下一、需求分析编写一个猜数字游戏,游戏规则:计算机给出一
手机版 网络编程 asp之家 www.aspxhome.com