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程序中使用Cookie的教程
Apr 30 Python
Python通过future处理并发问题
Oct 17 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
对pandas处理json数据的方法详解
Feb 08 Python
python实现抽奖小程序
Apr 15 Python
Mac安装python3的方法步骤
Aug 09 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
python实现二分查找算法
Sep 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的session cookie错误
2009/08/09 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
PHP微信支付实例解析
2016/07/22 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
分分钟入门python语言
2018/03/20 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python视频按帧截取图片工具
2019/07/23 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
会计专业自荐信
2013/12/02 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
员工自我工作评价
2015/03/06 职场文书
离职证明范本
2015/06/12 职场文书
教师岗位说明书
2015/09/30 职场文书
校运会班级霸气口号
2015/12/24 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS