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中stdout输出不缓存的设置方法
May 29 Python
Python实现的石头剪子布代码分享
Aug 22 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
Python csv模块使用方法代码实例
Aug 29 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
如何将json数据转换为python数据
Sep 04 Python
详解Python中的编码问题(encoding与decode、str与bytes)
Sep 30 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生成树的方法
2015/07/28 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
javascript实现yield的方法
2013/11/06 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
python中正则的使用指南
2016/12/04 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python实现车牌识别的示例代码
2019/08/05 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
非常详细的C#面试题集
2016/07/13 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
长城导游词300字
2015/01/30 职场文书
2015教师节通讯稿
2015/07/20 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
Redis唯一ID生成器的实现
2022/07/07 Redis