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中MySQLdb模块用法实例
Nov 10 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
python编写分类决策树的代码
Dec 21 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
给我一面国旗 python帮你实现
Sep 30 Python
Python 生成VOC格式的标签实例
Mar 10 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
Python hashlib模块的使用示例
Oct 09 Python
Django restful framework生成API文档过程详解
Nov 12 Python
神经网络训练采用gpu设置的方式
Mar 03 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php下实现农历日历的代码
2007/03/07 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
js 学习笔记(三)
2009/12/29 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
CentOS安装pillow报错的解决方法
2016/01/27 Python
基于python实现文件加密功能
2020/01/06 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
Python如何执行系统命令
2020/09/23 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
和平主题的演讲稿
2014/01/12 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
劳资协议书范本
2014/04/23 职场文书
说明书范文
2014/05/07 职场文书
公司开除员工通知
2015/04/22 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
导游词之千岛湖
2019/09/23 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js
JavaCV实现照片马赛克效果
2022/01/22 Java/Android