Python栈的实现方法示例【列表、单链表】


Posted in Python onFebruary 22, 2020

本文实例讲述了Python栈的实现方法。分享给大家供大家参考,具体如下:

Python实现栈

  • 栈的数组实现:利用python列表方法

代码如下:

# 列表实现栈,利用python列表方法
class listStack(object):

  def __init__(self):
    self.items = []

  def is_empty(self):
    return self.items == 0

  def size(self):
    return len(self.items)

  def top(self):
    return self.items[len(self.items)-1]

  def push(self, value):
    return self.items.append(value)

  def pop(self):
    return self.items.pop()
if __name__ =="__main__":
  stack = listStack()
  stack.push("welcome")
  stack.push("www")
  stack.push("3water")
  stack.push("net")
  print "栈的长度:", stack.size()
  print "\n".join(['%s:%s' % item for item in stack.__dict__.items()]) #打印栈stack所有元素
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()

运行结果:

栈的长度: 4
items:['welcome', 'www', '3water', 'net']
出栈: net
出栈: 3water
出栈: www

  • 栈的链表实现:

栈的链表实现中,压栈(push)类似于在单链表中表头添加节点;出栈(pop)类似于链表中表头删除节点并返回对应节点值;栈顶元素(top)就是获取链表中的第一个元素

链表节点的定义直接嵌套在链表栈类中

代码如下:

# 链表实现栈
class linkedStack(object):

  class Node(object):
    def __init__(self, value=None, next=None):
      self.value = value
      self.next = next

  def __init__(self):
    self.top = None
    self.length = 0

  def is_empty(self):
    return self.length == 0

  def size(self):
    return self.length

  # 获取栈顶元素
  def get(self):
    if self.is_empty():
      raise Exception("Stack is empty!")
    return self.top.value

  # 压栈
  def push(self, value):
    node = self.Node(value)
    old_top = self.top
    self.top = node
    node.next = old_top
    self.length += 1

  # 出栈
  def pop(self):
    if self.length == 0:
      raise Exception("Stack is empty!")

    item = self.top.value
    curnode = self.top.next
    self.top.next = self.top
    self.top = curnode
    self.length -= 1
    return item
if __name__ =="__main__":
  stack = linkedStack()
  stack.push("welcome")
  stack.push("www")
  stack.push("3water")
  stack.push("net")
  print "栈的长度:", stack.size()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()

运行结果:

栈的长度: 4
出栈: net
出栈: 3water
出栈: www
出栈: welcome

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python轻松实现代码编码格式转换
Mar 26 Python
python实现2048小游戏
Mar 30 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
python 判断文件或文件夹是否存在
Mar 18 Python
python实现滑雪者小游戏
Feb 22 #Python
python实现拼图小游戏
Feb 22 #Python
Python双链表原理与实现方法详解
Feb 22 #Python
Python单链表原理与实现方法详解
Feb 22 #Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 #Python
python通过文本在一个图中画多条线的实例
Feb 21 #Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 #Python
You might like
php循环输出数据库内容的代码
2008/05/24 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
python中time包实例详解
2021/02/02 Python
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
建筑专业毕业生推荐信
2013/11/21 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
大学生毕业求职信
2014/06/12 职场文书
租房安全协议书
2014/08/20 职场文书
六五普法宣传标语
2014/10/06 职场文书
2015年调度员工作总结
2015/04/30 职场文书
海洋天堂观后感
2015/06/05 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏