python中栈的原理及实现方法示例


Posted in Python onNovember 27, 2019

本文实例讲述了python中栈的原理及实现方法。分享给大家供大家参考,具体如下:

栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。

由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

栈结构实现

栈可以用顺序表实现,也可以用链表实现。

栈的操作

  • Stack() 创建一个新的空栈
  • push(item) 添加一个新的元素item到栈顶
  • pop() 弹出栈顶元素
  • peek() 返回栈顶元素
  • is_empty() 判断栈是否为空
  • size() 返回栈的元素个数

示例:

class Stack(object):
  """栈"""
  def __init__(self):
     self.items = []
  def is_empty(self):
    """判断是否为空"""
    return self.items == []
  def push(self, item):
    """加入元素"""
    self.items.append(item)
  def pop(self):
    """弹出元素"""
    return self.items.pop()
  def peek(self):
    """返回栈顶元素"""
    return self.items[len(self.items)-1]
  def size(self):
    """返回栈的大小"""
    return len(self.items)
if __name__ == "__main__":
  stack = Stack()
  stack.push("hello")
  stack.push("world")
  stack.push("itcast")
  print stack.size()
  print stack.peek()
  print stack.pop()
  print stack.pop()
  print stack.pop()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
gearman的安装启动及python API使用实例
Jul 08 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
python绘图模块matplotlib示例详解
Jul 26 Python
如何在Django配置文件里配置session链接
Aug 06 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
Django实现聊天机器人
May 31 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 #Python
python队列原理及实现方法示例
Nov 27 #Python
Python numpy.zero() 初始化矩阵实例
Nov 27 #Python
python双端队列原理、实现与使用方法分析
Nov 27 #Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 #Python
OpenCV+Python--RGB转HSI的实现
Nov 27 #Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 #Python
You might like
mysql建立外键
2006/11/25 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
python中的错误处理
2016/04/10 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
Python之Sklearn使用入门教程
2021/02/19 Python
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
初中语文教学反思
2014/02/02 职场文书
中年人生感言
2014/02/04 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Python中的datetime包与time包包和模块详情
2022/02/28 Python
Python实现数据的序列化操作详解
2022/07/07 Python