备注:以列表为基础进行对此的封装,以便达到栈的效果及作用
1 """
2 栈的顺序存储结构
3 重点代码
4 """
5
6 # 自定义栈异常
7 class StackError(Exception):
8 pass
9
10 # 基于列表实现顺序栈
11 class SStack:
12 def __init__(self):
13 # 约定列表的最后一个元素为栈顶
14 self._elems = []
15
16 def top(self):
17 if not self._elems:
18 raise StackError("stack is empty")
19 return self._elems[-1]
20
21 # 判断栈是否为空
22 def is_empty(self):
23 return self._elems == []
24
25 # 入栈
26 def push(self,elem):
27 self._elems.append(elem)
28
29 # 出栈
30 def pop(self):
31 if not self._elems:
32 raise StackError("stack is empty")
33 return self._elems.pop()
34
35
36 if __name__ == "__main__":
37 st = SStack() # 初始化栈
38 # print(st.top())
39 print(st.is_empty())
40 st.push(10)
41 st.push(20)
42 st.push(30)
43 while not st.is_empty():
44 print(st.pop())