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发送各种形式的邮件的方法汇总
Nov 09 Python
Python创建xml文件示例
Mar 22 Python
Python实现购物系统(示例讲解)
Sep 13 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
python迭代器常见用法实例分析
Nov 22 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
教你怎么用Python操作MySql数据库
May 31 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输出Excel文件类
2010/02/08 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
详解Chai.js断言库API中文文档
2018/01/31 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
express.js中间件说明详解
2019/03/19 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Python logging设置和logger解析
2019/08/28 Python
Python assert关键字原理及实例解析
2019/12/13 Python
使用python turtle画高达
2020/01/19 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
会计系中文个人求职信
2013/12/24 职场文书
财务工作者先进事迹材料
2014/01/17 职场文书
个人职业及收入证明
2014/10/13 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
2015年入党决心书
2015/02/05 职场文书
正规欠条模板
2015/07/03 职场文书
学习雷锋主题班会
2015/08/14 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python