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实现全角半角字符互转的方法
Nov 28 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
pycharm配置git(图文教程)
Aug 16 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
方法汇总:Python 安装第三方库常用
Apr 26 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 filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
解决python 输出是省略号的问题
2018/04/19 Python
python绘制热力图heatmap
2020/03/23 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Mac安装python3的方法步骤
2019/08/09 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
《姥姥的剪纸》教学反思
2014/02/25 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
家长意见书
2015/06/04 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis