• python实现数据结构-队列


    注:本文档主要是学习《Python核心编程(第二版)》时的练习题。

    队列是一种"先进先出"的数据结构(FIFO),是一种操作受限的线性结构,先进队列的成员先出队列。示意图如下:

    代码如下:

     1 #!/usr/bin/env python
     2 
     3 queue = []
     4 
     5 def enQ():
     6     queue.append(raw_input('Enter new string: ').strip())
     7 
     8 def deQ():
     9     if len(queue) == 0:
    10         print 'Cannot pop from an empty queue!'
    11     else:
    12         print 'Remove [', queue.pop(0), ']'
    13 
    14 def viewQ():
    15     print queue
    16 
    17 CMDs = {'e':enQ, 'd':deQ, 'v':viewQ}
    18 
    19 def showmenu():
    20     pr = """
    21 (E)nqueue
    22 (D)equeue
    23 (V)iew
    24 (Q)uit
    25 
    26 Enter choice: """
    27 
    28     while True:
    29         try:
    30             choice = raw_input(pr).strip()[0].lower()
    31         except (EOFError, keyboardInterrupt, IndexError):
    32             choice = 'q'
    33 
    34         print '
    Your picked: [%s]' % choice
    35         
    36         if choice == 'q':
    37             break
    38         elif choice not in 'dev':
    39             print 'Invalid option, try again'
    40         else:
    41             CMDs[choice]()
    42 
    43 if __name__ == '__main__':
    44     showmenu()

    测试现象:

     1 [root@localhost python]# python queue.py    
     2 
     3 (E)nqueue
     4 (D)equeue
     5 (V)iew
     6 (Q)uit
     7 
     8 Enter choice: e
     9 
    10 Your picked: [e]
    11 Enter new string: abcd
    12 
    13 (E)nqueue
    14 (D)equeue
    15 (V)iew
    16 (Q)uit
    17 
    18 Enter choice: e
    19 
    20 Your picked: [e]
    21 Enter new string: 1234
    22 
    23 (E)nqueue
    24 (D)equeue
    25 (V)iew
    26 (Q)uit
    27 
    28 Enter choice: v
    29 
    30 Your picked: [v]
    31 ['abcd', '1234']
    32 
    33 (E)nqueue
    34 (D)equeue
    35 (V)iew
    36 (Q)uit
    37 
    38 Enter choice: d
    39 
    40 Your picked: [d]
    41 Remove [ abcd ]
    42 
    43 (E)nqueue
    44 (D)equeue
    45 (V)iew
    46 (Q)uit
    47 
    48 Enter choice: v
    49 
    50 Your picked: [v]
    51 ['1234']
    52 
    53 (E)nqueue
    54 (D)equeue
    55 (V)iew
    56 (Q)uit
  • 相关阅读:
    leetcode-383-Ransom Note(以空间换时间)
    AtCoder
    AtCoder
    Hadoop序列化案例实操
    Java实现MapReduce Wordcount案例
    HDFS常用API操作 和 HDFS的I/O流操作
    HBase常用的JAVA API操作
    ZooKeeper之服务器动态上下线案例
    机器学习(6)——逻辑回归
    机器学习(5)——多项式回归与模型泛化
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/11980159.html
Copyright © 2020-2023  润新知