目录

  • 目录
  • 堆栈

堆栈

堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 .
在堆栈中, pushpop 是常用术语:

  • push: 意思是把一个对象入栈.
  • pop: 意思是把一个对象出栈.

下面是一个由 Python 实现的简单的堆栈结构:


stack = []                 # 初始化一个列表数据类型对象, 作为一个栈def pushit():              # 定义一个入栈方法stack.append(raw_input('Enter New String: ').strip())      # 提示输入一个入栈的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格def popit():               # 定义一个出栈方法if len(stack) == 0:print "Cannot pop from an empty stack!"else:print 'Remove [', `stack.pop()`, ']'# 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值def viewstack():           # 定义一个显示堆栈中的内容的方法print stackCMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作def showmenu():            # 定义一个操作菜单提示方法pr = """p(U)shp(O)p(V)iew(Q)uitEnter choice: """while True:while True:try:choice = raw_input(pr).strip()[0].lower()# Str.strip() 去除 String 对象前后的多余空格# Str.lower() 将多有输入转化为小写, 便于后期的统一判断# 输入 ^D(EOF, 产生一个 EOFError 异常)# 输入 ^C(中断退出, 产生一个 keyboardInterrupt 异常)except (EOFError, KeyboardInterrupt, IndexError):choice = 'q'print '\nYou picked: [%s]' % choiceif choice not in 'uovq':print 'Invalid option, try again'else:breakif choice == 'q':breakCMDs[choice]()# 获取 Dict 中字符对应的 functionName, 实现函数调用if __name__ == '__main__':showmenu()

NOTE: 在堆栈数据结构中, 主要应用了 List 数据类型对象的 容器可变 等特性, 表现在 List.append()List.pop() 这两个列表类型内建函数的调用.

Python 数据结构_堆栈相关推荐

  1. Python 数据结构_队列

    目录 目录 队列 队列 Queue 队列是一种先进先出(FIFO)的数据类型, 新的元素通过 入队 的方式添加进 Queue 的末尾, 出队 就是从 Queue 的头部删除元素. 用列表来做 Queu ...

  2. python数据结构_(列表)大O性能_学习笔记(2)

    1.列表 1)一般列表操作命令的复杂度(准确来说是函数的复杂度) 2)时间计算(timeit模块和Timer对象) 要捕获我们的每个函数执行所需的时间,我们将使用 Python 的 timeit 模块 ...

  3. python数据结构_大O符号_学习笔记(1)

    1.概念 :大O符号是用来表达一个算法的复杂程度的,是一个数量级 2.代码 a = 1 b = 2 c = 3 for i in range(n):for j in range(n):x = i*iy ...

  4. python数据结构_(字典)大O性能_学习笔记(3)

  5. 数据结构python版 答案,中国大学 MOOC_数据结构与算法Python版_章节测验答案

    中国大学 MOOC_数据结构与算法Python版_章节测验答案 更多相关问题 认识的本质是()A.肯定世界是可知的B.主体对客体的能动反映C.主体对客体的直观反映D.实践是 水灰比是影响混凝土()的主 ...

  6. mooc数据结构与算法python版期末测验_中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案...

    中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案 更多相关问题 采用fopen()函数打开文件,支持文件读取的参数有: [简答题]简单阐述高分子材料热-机械特征及成型加工的关系,并 ...

  7. python线性表和队列_[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列...

    python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构 ...

  8. python数据结构和算法讲解_【学习】python数据结构和算法

    二.算法分析 2.2 什么是算法分析 大O表示法 image.png 2.3 python数据结构的性能 列表 image.png 字典 image.png 说一下list[index]的o(1)原理 ...

  9. 希尔排序python 简书_数据结构_排序_直接插入+希尔排序

    数据结构_排序_直接插入排序+希尔排序 其实主要是为了讲述希尔排序,不过插入排序是希尔排序的基础,因此先来讲直接插入排序. 一.直接插入排序 1.原理 下标 0 1 2 3 4 5 6 7 8 -- ...

最新文章

  1. tf.keras.layers.TextVectorization 示例
  2. android 静态list,android studio 利用gradle和cmakelist生成c++静态库.a的方法总结
  3. 如何将 winston log 库记录的日志写入 mongo DB 数据库
  4. 安卓获取imei权限闪退_Android10 下获取序列号和IMEI号的权限
  5. P3346-[ZJOI2015]诸神眷顾的幻想乡【广义SAM】
  6. iphone-common-codes-ccteam源代码 CCNSArray.m
  7. Java RMI 介绍
  8. 如何将Excel表批量赋值到ArcGIS属性表
  9. RHCS Oracle HA for OEL5.8 KVM实践配置
  10. Git来回切换版本的时候,pom文件变黄,每次都需要重新添加到maven以及修改后文件不生效的解决方法
  11. smartphone软件的安装方法
  12. NCBI获取指定区域基因序列及其引物设计
  13. 如何通过WebEx Meeting进行远程IT协作?
  14. 每日一记—获取Bing每日一图实现Android欢迎页(一)
  15. 文本分类数据和评价指标
  16. python 学习(八—1) 项目:生成随机的测试试卷文件
  17. oracle dba 培训教程
  18. 如何实现团队高效协作?
  19. geany怎么创建文件夹_安装 Geany
  20. 大魔王程序员生成记#01#C语言基础

热门文章

  1. python写电商网站框架,python-django框架-电商项目-商品模块开发_20191124
  2. 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群
  3. vdi voi idv区别_VDI桌面虚拟化和IDV桌面虚拟化到底有哪些不同
  4. netty做一个posp的网络_皑云网络——接手一个新的SEM竞价账户怎么做?
  5. 休斯顿大学提出BCI-机器人(脑-外骨骼接口系统)可以改善运动恢复
  6. SpeedTree导入到虚幻UE4的注意事项
  7. 嬴彻科技完成L4级重卡无人驾驶路测
  8. 人刚毕业,在小米造狗没有KPI,雷军奖励100万美金
  9. 核弹级漏洞log4shell席卷全球!危及苹果腾讯百度网易,修改iPhone名称就可触发...
  10. 苹果5年来盈利首次未超预期,但大中华区营收暴增83%