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()

队列和堆栈的实现方式很相似, 区别在于队列总是先弹出第一个元素而堆栈总是先弹出最后一个元素.

时间: 2024-09-30 08:50:37

Python 数据结构_队列的相关文章

Python 数据结构_堆栈

目录 目录 堆栈 堆栈 堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 . 在堆栈中, push 和 pop 是常用术语: push: 意思是把一个对象入栈. pop: 意思是把一个对象出栈. 下面是一个由 Python 实现的简单的堆栈结构: stack = [] # 初始化一个列表数据类型对象, 作为一个栈 def pushit(): # 定义一个入栈方法 stack.append(raw_input('Enter New Strin

Python数据结构

前言 Python作为一种弱类型编程语言,其数据类型较之于C/C++无论是在数据的存储还是调用都有着很大的区别.其特有的字典类型更是一个非常经典且功能强大的数据类型.下面一起来学习Python的数据类型,期间也会穿插一些Python的实用技巧. 软件环境 系统  Ubuntukylin 14.04 软件  Python 4.7.6 IPython 4.0.0 Python数据结构树状图 基本数据类型  数值型  – 整型  – 浮点型  – 复数 布尔型 字符型 组合数据类型  序列  – 列表

Python数据结构之集合概览

Python数据结构之集合概览集合(collection),正如其名称所示,是可以作为概念性的单位来处理的一组零个或多个项.几乎软件的每一个重要部分都涉及集合的使用.尽管我们在计算机科学中所学的一些内容已经随着技术的变化逐渐消失,但组织集合的基本原理并没有变化.尽管集合在结构和用法上各不相同,但是,所有的集合都有着相同的基本作用,即帮助程序员有效地在程序中组织数据. 可以从两个视角来看待集合.集合的用户和客户关注它们在各种应用程序中能做些什么.集合的开发者和实现者关注它们作为通用资源的最佳性能.

Python多线程和队列操作实例

  这篇文章主要介绍了Python多线程和队列操作实例,本文直接给给实例代码,需要的朋友可以参考下 Python3,开一个线程,间隔1秒把一个递增的数字写入队列,再开一个线程,从队列中取出数字并打印到终端 代码如下: #! /usr/bin/env python3 import time import threading import queue # 一个线程,间隔一定的时间,把一个递增的数字写入队列 # 生产者 class Producer(threading.Thread): def __i

数据结构_考试题_求大神相助

问题描述 数据结构_考试题_求大神相助 主题下载"> 图片说明](http://img.ask.csdn.net/upload/201501/21/1421830891_832514.png) A B c d E f g 试画出上图无向图的邻接表存储结构,并给出以定点A为出发点的深度优先遍历序列和广度优先遍历序列 解决方案 a b c d e f g a - b 1 - c 1 1 - d 0 0 1 - e 0 1 1 0 - f 0 0 0 0 1 - g 0 0 1 0 0 0 深度

数据结构循环队列存储问题

问题描述 数据结构循环队列存储问题 在具有n个存储单元的循环队里中,队满时有n-1个元素,还有一个元素用来存储什么? 解决方案 队列两端需要保留同一个元素,为了循环用 解决方案二: 队列为空时,队头FRONT与队尾REAR相等,作循环队列用时不能将其填满,因为满了的话REAR标志又与队头标志FRONT相等了,与队列为空时的标志一样,冲突了. 解决方案三: 摘一段网上说的,给你 n-1个 因为如果放置n个元素,首尾指针指向同一位置,与空队列无法区别,所以循环队列中认为当尾指针的后一个指针为首指针时

表达式-数据结构_考试题_求大神帮助

问题描述 数据结构_考试题_求大神帮助 表达式axb+(c-d/e)xf的前缀表达式为什么啊! 大神知道的,帮助一下,万分火急啊 解决方案 有点不记得了,是不是+×ab×-c/def ,你可以参考下其他人的答案. 解决方案二: +*ab*-c/def 解决方案三: 前缀表达式最简单了,相当于改写成函数形式,脱掉括号 比如 a+b 前缀就是add(a, b),对吧,我们把add写作+,脱掉括号就是+ab 再比如 a+b*c 就是 add(a, mul(b, c)) 那么就是 +a*bc 解决方案四

python数据结构list的extend与append的差别

样例: 01 >>> li = ['a', 'b', 'c'] 02 >>> li.extend(['d', 'e', 'f']) 03 >>> li 04 ['a', 'b', 'c', 'd', 'e', 'f'] 05 >>> len(li)                    06 6 07 >>> li[-1] 08 'f' 09 >>> li = ['a', 'b', 'c'] 10

c语言-数据结构循环队列 为什么执行后的结果是这样,不能正确的输出结果

问题描述 数据结构循环队列 为什么执行后的结果是这样,不能正确的输出结果 #include #include #define OK 1 #define ERROR -1 #define OVERFLOW -2 #define INIT_QUEUE_SIZE 5//当前分配的最大空间 #define QUEUEINCREMENT 10 typedef int Status; typedef float QElemType ; typedef struct { QElemType* base;//初