数据结构-栈

时间:2019-12-03 14:22:29   收藏:0   阅读:125

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

栈是一种"后进先出"的数据结构(LIFO),是一种操作受限的线性结构,数据只能从栈顶进入和栈顶出去。示意图如下:

技术图片

 

 代码实现方式如下:

 1 #!/usr/bin/env python
 2 
 3 stack = []
 4 
 5 def pushstack():
 6     stack.append(raw_input(Enter new string: ))
 7 
 8 def popstack():
 9     if len(stack) == 0:
10         print Cannot pop from empty stack!
11     else:
12         print Removed [, stack.pop(), ]
13 
14 def viewstack():
15     print stack
16 
17 CMDs = {u:pushstack, o:popstack, v:viewstack}
18 
19 def showmenu():
20     pr = """
21 p(U)sh
22 P(O)p
23 (V)iew
24 (Q)uit
25 Enter choice:"""
26 
27     while True:
28         try:
29             choice = raw_input(pr).strip()[0].lower()
30         except(EOFError, keyboardInterrupt, IndexError):
31             choice = q
32 
33         print \nYou picked: [%s] % choice
34         if choice not in uovq:
35             print Invalid option, try again
36             continue
37 
38         if choice == q:
39             break
40         
41         CMDs[choice]()
42 
43 
44 if __name__ == __main__:
45     showmenu()

测试现象:

 1 [root@localhost python]# python stack.py 
 2 
 3 p(U)sh
 4 P(O)p
 5 (V)iew
 6 (Q)uit
 7 Enter choice:u
 8 
 9 You picked: [u]
10 Enter new string: abc
11 
12 p(U)sh
13 P(O)p
14 (V)iew
15 (Q)uit
16 Enter choice:u
17 
18 You picked: [u]
19 Enter new string: cde
20 
21 p(U)sh
22 P(O)p
23 (V)iew
24 (Q)uit
25 Enter choice:u
26 
27 You picked: [u]
28 Enter new string: 123
29 
30 p(U)sh
31 P(O)p
32 (V)iew
33 (Q)uit
34 Enter choice:v
35 
36 You picked: [v]
37 [abc, cde, 123]
38 
39 p(U)sh
40 P(O)p
41 (V)iew
42 (Q)uit
43 Enter choice:o
44 
45 You picked: [o]
46 Removed [ 123 ]
47 
48 p(U)sh
49 P(O)p
50 (V)iew
51 (Q)uit
52 Enter choice:o
53 
54 You picked: [o]
55 Removed [ cde ]
56 
57 p(U)sh
58 P(O)p
59 (V)iew
60 (Q)uit
61 Enter choice:v
62 
63 You picked: [v]
64 [abc]

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!