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实现正则检测密码合法性
Jan 05 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
书单|人生苦短,你还不用python!
Dec 29 Python
python自动12306抢票软件实现代码
Feb 24 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
python虚拟环境迁移方法
Jan 03 Python
django框架使用方法详解
Jul 18 Python
基于Python解密仿射密码
Oct 21 Python
基于python的列表list和集合set操作
Nov 24 Python
Python list运算操作代码实例解析
Jan 20 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
在python中使用pyspark读写Hive数据操作
Jun 06 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 session安全问题分析
2011/06/24 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python常用函数详解
2016/09/13 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
中职应届生会计求职信
2013/10/23 职场文书
室内拓展活动方案
2014/02/13 职场文书
年会搞笑主持词
2014/03/27 职场文书
植树节标语
2014/06/27 职场文书
事业单位聘任报告
2015/03/02 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang