Python 数据结构之堆栈实例代码


Posted in Python onJanuary 22, 2017

Python 堆栈

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

  • 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 stack

CMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作

def showmenu():      # 定义一个操作菜单提示方法
  pr = """
  p(U)sh
  p(O)p
  (V)iew
  (Q)uit

  Enter 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]' % choice

      if choice not in 'uovq':
        print 'Invalid option, try again'
      else:
        break


    if choice == 'q':
      break
    CMDs[choice]()
    # 获取 Dict 中字符对应的 functionName, 实现函数调用

if __name__ == '__main__':
  showmenu()

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
浅谈Python中copy()方法的使用
May 21 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
详解python中的线程与线程池
May 10 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
Python验证码截取识别代码实例
May 16 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
pandas 操作 Excel操作总结
Mar 31 Python
Python 常用 PEP8 编码规范详解
Jan 22 #Python
python学习之面向对象【入门初级篇】
Jan 21 #Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 #Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 #Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 #Python
python实现的多线程端口扫描功能示例
Jan 21 #Python
Python 字符串大小写转换的简单实例
Jan 21 #Python
You might like
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
vue实现pdf文档在线预览功能
2019/11/26 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Python help()函数用法详解
2014/03/11 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Python subprocess库的使用详解
2018/10/26 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
前台接待的工作职责
2013/11/21 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
物理学专业自荐信
2014/06/11 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
小学端午节活动总结
2015/02/11 职场文书
收费员岗位职责
2015/02/14 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
春晚观后感
2015/06/11 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python