栈(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数据结构与算法第10讲_python数据结构与算法(10)相关推荐

  1. python数据结构与算法第10讲_Python数据结构与算法10:基本结构:练习题1

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为4分钟. 栈的编程练习题1:有效的括号 给定一个只包括 '(',')','{','}','[',']' 的 ...

  2. python删除链表满足pred的元素_python 数据结构一 之 线性表

    python数据结构教程第一课 从这里将会正式开始讲解python的一些实用的数据结构,原理加上实例源码. 一.简介 二.线性表的抽象数据类型 三.顺序表的实现 四.链接表的实现 1.单链表 2.带尾 ...

  3. python算法库执行效率_Python智能优化算法库小汇总

    最近查了一圈python的智能优化算法库,发现在python里面这样的库相对一些传统的语言还真是不太多(比如Matlab).总的看起来似乎起步都还比较晚(个人认为有可能是因为智能算法本身相对复杂并且过 ...

  4. python取列表前几个元素_python list输出最后10个元素

    python list输出10个元素的方法 怎么在python中输出一个列表中出现次数前十的元素 打印列表中出现前十的元素,可以利用列表的count属性,可以计数,然后根据数量多少排序 来输出元素 a ...

  5. python数据结构与算法第六讲_Python 学习 -- 数据结构与算法 (六)

    栈 是一种 "操作受限"的线性表,只允许在一端插入和删除数据. 从功能是上来说,数组和链表确实可以替代栈,但是特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多的操作接口 ...

  6. python程序结构有哪几种_Python数据结构与算法(几种排序)小结

    Python数据结构与算法(几种排序) 数据结构与算法(Python) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺 ...

  7. python列表是顺序表还是链表_Python数据结构与算法(链表使用详解)

    链表 单向链表 p是头节点,指向第一个值,最后一个是伪节点,因为不指向地址. 表元素域elem用来存放具体的数据 链接域next用来存放下一个节点的位置(python中的标识) 变量p指向链表的头节点 ...

  8. python编写代码运用递归画图形_python数据结构与算法 22 递归图形

    上节中我们已经知道有些问题,如果用递归解决变得非常容易.但是仍然很难在大脑里形成一种模型或可视化的方法,让我们直觉地明白函数递归过程到底发生了什么.这一节我们引入几个例子,用递归的方法画几个有趣的图形 ...

  9. python包含多个元组的元组_Python数据结构(元组,列表,字典)

    Python内置了 几种数据结构,元组,列表 字典 1.元组 元组可以由不同的元素组成,所有元素通过圆括号(  )包含起来,并通过逗号","隔开.如变量名 = (元素1,元素2,. ...

最新文章

  1. 传智168期JavaEE struts2杜宏 day 29~day31笔记(2017年2月4日23:14:00)
  2. webmin下重启linux系统
  3. oracle忘记密码
  4. 【实验吧】编程循环求底运算
  5. thinkphp url去掉index.php,thinkphp 去掉URL 里面的index.php(?s=)
  6. QEMU 网络虚拟化
  7. android listview下拉刷新动画,ListView下拉刷新实现方式详解和改造(上)
  8. Zookeeper面试题锦集
  9. Mac系统下运行Java项目出现Unable to start embedded Tomcat server解决方法
  10. HTML5中Audio使用踩坑汇总
  11. 一键搞定JavaEE应用 JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0 9版
  12. Rhino基础教程---三管混接(法二、法三)
  13. 【计量经济学论文】近十年烟台港发展情况的计量分析(节选)
  14. oracle plm 文件系统,ORACLE-PlM管理方案(标准材料).ppt
  15. 敏捷迭代燃尽图_3个敏捷燃尽报告以及如何使用它们
  16. 【网络通信三】研华网关Modbus服务设置
  17. matlab中solve解方程,怎么用Matlab解方程?
  18. 自然月合同月 生成费用
  19. 一文读懂,CPU、精简指令集、复杂指令集该如何理解?
  20. 日历记事本java_日历记事本-JAVA课程设计..

热门文章

  1. MyBatis Generator 学习
  2. LINUX下软件包的安装与使用
  3. linux下构建Zabbix网络监控平台
  4. [翻译]在GridView中插入新记录
  5. CowNew开源-sql解析引擎和cownewsql阶段成果汇报
  6. hdu 1558(线段相交+并查集)
  7. hdu 1007(最近点对)
  8. php连接MYSQL(1)
  9. jsp网上商城jsp课程设计
  10. PCL库VTK显示点云法向时出错:no override found for vtkActor