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运行效率的方法之间的对比
Apr 03 Python
python创建关联数组(字典)的方法
May 04 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
简单易懂的python环境安装教程
Jul 13 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
对python 读取线的shp文件实例详解
Dec 22 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Python中logging日志的四个等级和使用
Nov 17 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
Python中Cookies导出某站用户数据的方法
May 17 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
浅析php学习的路线图
2013/07/10 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP安全下载文件的方法
2016/04/07 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python实现将内容分行输出
2015/11/05 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
解决Django中多条件查询的问题
2019/07/18 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
python爬虫 正则表达式解析
2019/09/28 Python
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
岗位廉洁从政承诺书
2014/03/27 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
Nginx源码编译安装过程记录
2021/11/17 Servers