面试题--写一个堆栈

 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 """

 

posted @ 2020-02-17 20:13  进阶的淑琴  阅读(387)  评论(1)    收藏  举报