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——数据结构——“自定义队列结构“
自定义队列结构 (学习队列后,自己的码) 主要功能:用列表模拟队列结构,考虑了入队,出队,判断队列是否为空,是否已满以及改变队列大小等基本操作. 下面是封装的一个类,把代码保存在myQueue.py ...
- Python 数据结构_堆栈
目录 目录 堆栈 堆栈 堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 . 在堆栈中, push 和 pop 是常用术语: push: 意思是 ...
- python数据结构之队列
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许插入的一端为队尾,允许删除的一端 ...
- python数据结构之队列(二)
书接上文,双端队列区别于单队列为:双端队列可以对队列头和尾部同时进行操作,单队列不行 #coding:utf-8 class DoubleQueue(object): def __init__(sel ...
- python数据结构之队列(一)
队列概念 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许插入的一端为队尾,允许 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_2_数据结构_队列
先进先出 队列 队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入, 而在表的另一端进行删除. 简单的说,采用该结构的集合,对元素的存取有如下的特点: ...
- 【LeetCode 232_数据结构_队列_实现】Implement Queue using Stacks
class Queue { public: // Push element x to the back of queue. void push(int x) { while (!nums.empty( ...
- python数据结构_递归_汉诺塔问题
已经不是第一次写这个汉诺塔问题, 其实递归还真是不太好理解, 因为递归这种是想其实有点反人类, 为什么? 因为不太清楚, 写个循环一目了然, 用递归其实要把核心逻辑理清楚, 要不根本没法进行下去 所有 ...
- python数据结构之栈与队列
python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...
随机推荐
- js 邮箱,手机电话验证
var mail=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; var tel=/^(\d3,4|\d{3,4} ...
- jQuery, js 验证两次输了密码的一相同
<div class="form-group"> <label class="col-sm-2 control-label font"> ...
- SCP-bzoj-1078
项目编号:bzoj-1078 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 斜堆有一个著名的性质:如果一个节点没有左子树,则它一定没有右子树,这也是它“斜堆”名称的由来. 此题通过给出斜堆来 ...
- Shell5
sed文本编辑器(vim,notepad)非交互式的文本编辑器sed是逐行处理编辑器 sed [选项] ‘条件指令' 文件 #没有条件指令时,默认对全文所有进行修改sed的所有操作默认时在 ...
- Chrome 调试跨域问题解决方案之插件篇
跨域,就是A域名下的js,想请求B域名下的接口数据.跨域,只存在于浏览器端.App和小程序不存在跨域问题.跨域,分浏览器策略和服务器策略. 如果服务器配置了允许跨域,那就没有跨域问题 如果uni-ap ...
- jmeter 环境java监视和管理控制
打开这个小工具的步骤很简单,如果你已经配置好了Jmeter运行的环境,那么你也就不用去做其他的配置,直接 点击:开始——>运行——>输入cmd——>然后在出现的命令行界面输入“jco ...
- XML XPATH simpleXML
XPath 通过DOM结构定位节点,在数据量很大的情况下速度下降的很厉害.解决方法是XPath.Xpath的作用:用于快速定位节点 position()是节点的位置,节点的位置是从1开始 simple ...
- Linux两台机器简历信任
cd ~/.ssh ssh-keygen -t rsa scp ./id_rsa.pub root@192.168.1.1:/root/.ssh/authorized_keys
- 2019杭电多校第三场hdu6609 Find the answer(线段树)
Find the answer 题目传送门 解题思路 要想变0的个数最少,显然是优先把大的变成0.所以离散化,建立一颗权值线段树,维护区间和与区间元素数量,假设至少减去k才能满足条件,查询大于等于k的 ...
- 拾遗:btrfs
#扫描 btrfs 文件系统btrfs device scan btrfs device scan /dev/sda #创建子卷或快照 btrfs subvolume create /mnt/btrf ...