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 生成不重复的随机数的代码
May 15 Python
Python实现提取文章摘要的方法
Apr 21 Python
python实现中文输出的两种方法
May 09 Python
Python3写入文件常用方法实例分析
May 22 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
Python3爬虫学习入门教程
Dec 11 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
深入解析Python中函数的参数与作用域
2016/03/20 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
python实现报表自动化详解
2017/11/16 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
python与idea的集成的实现
2020/11/20 Python
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
电气自动化大学生求职信
2013/10/16 职场文书
卫校毕业生自我鉴定
2013/10/31 职场文书
公司聘任书模板
2014/03/29 职场文书
数字化校园建设方案
2014/05/03 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
考研英语复习计划
2015/01/19 职场文书
毕业论文致谢词
2015/05/14 职场文书
交通安全教育主题班会
2015/08/12 职场文书
初一语文教学反思
2016/03/03 职场文书