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之import机制详解
Jul 03 Python
Python base64编码解码实例
Jun 21 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
对Python中画图时候的线类型详解
Jul 07 Python
Django 路由控制的实现
Jul 17 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
Python 串口通信的实现
Sep 29 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
详解Python魔法方法之描述符类
May 26 Python
Pytest中conftest.py的用法
Jun 27 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 pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
PHP 8新特性简介
2020/08/18 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
jQuery动态添加
2016/04/07 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
打架检讨书300字
2014/02/02 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
离婚协议书的范本
2015/01/27 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android