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 07 Python
改进Django中的表单的简单方法
Jul 17 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
Django REST framework 分页的实现代码
Jun 19 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
浅谈python锁与死锁问题
Aug 14 Python
python开发一款翻译工具
Oct 10 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判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
什么是JavaScript
2009/08/13 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
关于vue-router的那些事儿
2018/05/23 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python模块学习 re 正则表达式
2011/05/19 Python
使用Python构建Hopfield网络的教程
2015/04/14 Python
django站点管理详解
2017/12/12 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
Python安装selenium包详细过程
2019/07/23 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
商务专员岗位职责
2013/11/23 职场文书
求职简历的自我评价
2014/01/31 职场文书
家长对孩子的感言
2014/03/10 职场文书
球队口号
2014/06/18 职场文书
教师节班会主持词
2015/07/06 职场文书