python实现数据结构-队列
注:本文档主要是学习《Python核心编程(第二版)》时的练习题。
队列是一种"先进先出"的数据结构(FIFO),是一种操作受限的线性结构,先进队列的成员先出队列。示意图如下:

代码如下:
#!/usr/bin/env python queue = [] def enQ():
queue.append(raw_input('Enter new string: ').strip()) def deQ():
if len(queue) == 0:
print 'Cannot pop from an empty queue!'
else:
print 'Remove [', queue.pop(0), ']' def viewQ():
print queue CMDs = {'e':enQ, 'd':deQ, 'v':viewQ} def showmenu():
pr = """
(E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: """ while True:
try:
choice = raw_input(pr).strip()[0].lower()
except (EOFError, keyboardInterrupt, IndexError):
choice = 'q' print '\nYour picked: [%s]' % choice if choice == 'q':
break
elif choice not in 'dev':
print 'Invalid option, try again'
else:
CMDs[choice]() if __name__ == '__main__':
showmenu()
测试现象:
[root@localhost python]# python queue.py (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: e Your picked: [e]
Enter new string: abcd (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: e Your picked: [e]
Enter new string: 1234 (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: v Your picked: [v]
['abcd', ''] (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: d Your picked: [d]
Remove [ abcd ] (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: v Your picked: [v]
[''] (E)nqueue
(D)equeue
(V)iew
(Q)uit
python实现数据结构-队列的更多相关文章
- 用Python实现数据结构之队列
队列 队列与栈的类型很相似,但它遵循的原则是先进先出(FIFO),也就是元素插入的时候只能在该数据结构的末端,而删除只能删除最前面的元素.队列同样应用广泛,例如打印机的队列或者是一个web服务器响应请 ...
- python 与数据结构
在上面的文章中,我写了python中的一些特性,主要是简单为主,主要是因为一些其他复杂的东西可以通过简单的知识演变而来,比如装饰器还可以带参数,可以使用装饰类,在类中不同的方法中调用,不想写的太复杂, ...
- [0x00 用Python讲解数据结构与算法] 概览
自从工作后就没什么时间更新博客了,最近抽空学了点Python,觉得Python真的是很强大呀.想来在大学中没有学好数据结构和算法,自己的意志力一直不够坚定,这次想好好看一本书,认真把基本的数据结构和算 ...
- (python数据分析)第03章 Python的数据结构、函数和文件
本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...
- javascript数据结构——队列
队列是一种先进先出的数据结.队列只能在队尾插入元素,在队首删除元素,这点和栈不一样.它用于存储顺序排列的数据.队列就像我们日常中的排队一样,排在最前面的第一个办理业务,新来的人只能在后面排队.队列这种 ...
- Python高级数据结构-Collections模块
在Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了之中,认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections 这个模块对上面的数据结构做了封装,增加 ...
- python之消息队列
引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题.消息服务擅 ...
- Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET
Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET Python -- 堆数据结构 heapq 分类: Python 2012-09 ...
- java 数据结构 队列的实现
java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...
随机推荐
- dotnet 将文件删除到回收站
默认删除文件的时候 File.Delete 是将文件永久删除,如果是一些文档,建议删除到回收站,这样用户可以自己还原 通过 SHFileOperation 可以将文件放在回收站 本文提供的方法暂时只能 ...
- dotnet core 用值初始化整个数组
如果想要创建一个数组,在这个数组初始化一个值,有多少不同的方法? 本文告诉大家三个不同的方法初始化 在开发中,会不会用很多的时间在写下面的代码 var prime = new bool[1000]; ...
- css3 移动端旋转动画暂停
音乐播放图片旋转动画 ios不支持暂停: animation-play-state: paused; @-webkit-keyframes rotate{ 100% { transform: rota ...
- 027.MFC_映射消息
映射消息MFC中的消息映射宏 DECLARE_MESSAGE_MAP BEGIN_MEASSAGE_MAP END_MESSAGE_MAP向导自动映射消息手动添加映射消息 MFC会帮我们自动映射大部分 ...
- 支撑百万级并发,Netty如何实现高性能内存管理
Netty作为一款高性能网络应用程序框架,实现了一套高性能内存管理机制 通过学习其中的实现原理.算法.并发设计,有利于我们写出更优雅.更高性能的代码:当使用Netty时碰到内存方面的问题时,也可以更高 ...
- Alibaba Cloud Toolkit 使用心得(IDEA版)
一.安装插件 确保 IntelliJ IDEA 在 2018.1 或更高版本 打开 Settings - Plugins 搜索安装 Alibaba Cloud Toolkit 二.配置环境 Deplo ...
- TCP/IP||Ping
1.what's PING 由Mike Muuss编写,为了测试另一台主机是否可达,发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答,如果不能PING到某台主机,那么就不能Telnet或 ...
- $Poj1934\ Trip$ 线性$DP+$搜索
Luogu Description 爱丽丝和鲍伯想去度假,他们每个人都制定了一个参观城市的清单,该地区正好有26个城市,因此它们被编码为小写字母“a”到“z”.清单上可能重复出现某个城市.因为他们想一 ...
- IDEA启动报错Internal error. Please report to http://jb.gg/ide/critical-startup-errors java.lang.NoClassDefFoundError: org/eclipse/xtext/xbase/lib/Exceptions
报错内容: IDEA 启动报错 Internal error. Please report to http://jb.gg/ide/critical-startup-errors 报错图为: 我尝试找 ...
- dos2unix命令 – 将DOS格式的文本文件转换成UNIX格式
今天做题的时候,出现了个很冷门的: 查找子目录src下所有后缀为.txt的文件执行dos2unix命令,把文件从Dos格式转换为Linux格式,正确的命令是:find src "*.txt& ...