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使用新浪微博api上传图片到微博示例
Jan 10 Python
从零学python系列之数据处理编程实例(一)
May 22 Python
简单介绍Python中的struct模块
Apr 28 Python
详解Python中的日志模块logging
Jun 19 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
python获取list下标及其值的简单方法
Sep 12 Python
Python中字符串的修改及传参详解
Nov 30 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
Python常用的json标准库
Feb 19 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
对python中list的五种查找方法说明
Jul 13 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 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
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
php文件上传类的分享
2017/07/06 PHP
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
K-近邻算法的python实现代码分享
2017/12/09 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
Python原始套接字编程实例解析
2020/01/29 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
法学专业应届生求职信
2013/10/16 职场文书
调解员先进事迹材料
2014/02/07 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
科技活动总结范文
2015/05/11 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python