Python 数据结构之队列的实现


Posted in Python onJanuary 22, 2017

Python 队列

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

用列表来做 Queue:

queue = []         # 初始化一个列表数据类型对象, 作为一个队列

def enQ():       # 定义一个入栈方法
  queue.append(raw_input('Enter New String: ').strip())   
  # 提示输入一个入队的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格

def deQ():        # 定义一个出队方法
  if len(queue) == 0:
    print "Cannot pop from an empty queue!"
  else:
    print 'Remove [', `queue.pop(0)`, ']'
    # 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值
    # queue.pop(0) 总是将在队列中最前面的元素弹出

def viewQ():      # 定义一个显示队列中的内容的方法
    print queue

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

def showmenu():      # 定义一个操作菜单提示方法
  pr = """
  (E)nqueue
  (D)equeue
  (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()

队列和堆栈的实现方式很相似, 区别在于队列总是先弹出第一个元素而堆栈总是先弹出最后一个元素.

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

Python 相关文章推荐
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
python网络编程学习笔记(四):域名系统
Jun 09 Python
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
python根据时间生成mongodb的ObjectId的方法
Mar 13 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
python实现排序算法解析
Sep 08 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
python连接mysql有哪些方法
Jun 24 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 Python
python脚本框架webpy模板控制结构
Nov 20 Python
Python 数据结构之堆栈实例代码
Jan 22 #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
You might like
Sony CFR 320 修复改造
2020/03/14 无线电
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
Python遍历numpy数组的实例
2018/04/04 Python
Python理解递归的方法总结
2019/01/28 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
违反学校规定检讨书
2014/01/18 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
司法所长先进事迹
2014/06/02 职场文书
委托书的写法
2014/08/30 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
大学学生个人总结
2015/02/15 职场文书
公司总经理岗位职责
2015/04/01 职场文书
实习介绍信范文
2015/05/05 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python