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通过urllib2爬网页上种子下载示例
Feb 24 Python
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python3 爬取图片的实例代码
Nov 06 Python
Python版名片管理系统
Nov 30 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
如何将json数据转换为python数据
Sep 04 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
PyTorch 如何自动计算梯度
May 23 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php写的简易聊天室代码
2011/06/04 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP微信API接口类
2016/08/22 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
python 布尔操作实现代码
2013/03/23 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
python线程优先级队列知识点总结
2021/02/28 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
你常见到的runtime exception
2016/09/05 面试题
请介绍一下Ant
2016/07/22 面试题
2015年春节标语口号
2014/12/09 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
600字作文之感受大自然
2019/11/27 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
vue的项目如何打包上线
2022/04/13 Vue.js