zoukankan      html  css  js  c++  java
  • 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 '
    You 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()

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

  • 相关阅读:
    php课程 6-23 mb_substr字符串截取怎么用
    js进阶 10-6 jquery中的属性选择器有哪些
    php实现 明明的随机数
    js进阶 10-5 jquery中的层级选择器有哪些
    js进阶 10-4 jquery中基础选择器有哪些
    请问开发手机游戏需要什么软件?
    阿里云服务器apache服务器局域网访问公网访问配置
    js进阶 10-3 jquery中为什么用document.ready方法
    js进阶 10-2 JQuery基础语法是什么
    js进阶 9 js操作表单知识点总结
  • 原文地址:https://www.cnblogs.com/jmilkfan-fanguiju/p/7532317.html
Copyright © 2011-2022 走看看