1 写一个堆栈
2 堆栈是一个后进先出的数据结构,其工作方式就像生活 中常见到的直梯,先进云的人肯定是最后出。
3
4 我们可以设置一个类,用列表来存放栈中的元素的信息。利用append()和pop()实现栈的出栈和入栈push()
5 class Stack():
6 def __init__(self,size):
7 self.size=size
8 self.stack=[]
9 self.top=1#tip属性,用来指示栈的存储情况,初始值为-1
10 def push(self,x):#入栈之前检查是否已满
11 if self.isfull():
12 raise exception("stack is full!")
13 else:
14 self.stack.append(x)
15 self.top=self.top+1
16 def pop(self):#出栈之前检查栈是否为空
17 if self.isempty():
18 raise exception("stack is empty")
19 else:
20 self.top=self.top-1
21 self.stack.pop()
22 def isfull(self):
23 return self.top+1==self.size
24 def isempty(self):
25 return self.top=="-1"
26 def showStack(self):
27 print(self.stack)
28
29 s=Stack(10)
30 for i in range(6):
31 s.push(i)
32
33 s.showStack()
34
35 for i in range(3):
36 s.pop()
37
38 s.showStack()
39 执行结果:
40 >>> for i in range(6):
41 ... s.push(i)
42 ...
43 >>> s.showStack()
44 [0, 1, 2, 3, 4, 5]
45 >>> for i in range(3):
46 ... s.pop()
47 ...
48 >>> s.showStack()
49 [0, 1, 2]
50 >>>
51
52 """
53 类中有top属性,用来指示栈的存储情况,初始值为1,一旦插入一个元素,其值加1,利用top的值乐意判定栈是空还是满。
54 执行时先将0,1,2,3,4,5依次入栈,然后删除栈顶的前三个元素
55 """