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 lambda和Python def区别分析
Nov 30 Python
python使用自定义user-agent抓取网页的方法
Apr 15 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
利用Python实现Picgo图床工具
Nov 23 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脚本数据库功能详解(上)
2006/10/09 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
python 用下标截取字符串的实例
2018/12/25 Python
python的re模块使用方法详解
2019/07/26 Python
Django单元测试工具test client使用详解
2019/08/02 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
应聘护士自荐信
2013/10/21 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
服装创业计划书范文
2014/02/05 职场文书
行政主管岗位职责
2015/02/03 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
600字作文之感受大自然
2019/11/27 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
如何利用python创作字符画
2022/06/25 Python