|
发表于 2020-11-18 17:55:21
|
显示全部楼层
本楼为最佳答案
栈就是一种数据类型,是先进后出的一种数据,和数组类似,只不过只能按顺序取值。
比喻起来就像是只有一个口的羽毛球筒,你一个一个塞进去羽毛球,要取出时,取到的肯定都是后塞进去的那个。
代码部分如下注释
- #定义一个名为 Stack的类
- class Stack:
- #类的初始化方法,需要提供一个参数start
- #初始化时先定义一个类的属性stack。
- #遍历传进来的start,调用本身的push方法将start的元素都放到自身的stack里面
- def __init__(self,start=[]):
- self.stack = []
- for x in start:
- self.push(x)
- #判断栈是否为空,因为空列表用作判断时等同于False,因为 not False就时True所以当列表为空时就会返回True
- def isEmpty(self):
- return not sefl.stack
- #向栈添加元素,列表的append方法就是在数组的末尾添加上对应的值。
- def push(self,obj):
- self.stack.append(obj)
- #从栈中取出元素,因为是后进先出,所以就是要取出最后一个元素。
- #列表的pop方法就是取出列表的一个值,没传参数的情况下是默认取出最后一个,比如x=[1,2,3]y=x.pop()后就是x=[1,2],y=3
- def pop(self):
- if not self.stack:
- print('警告:栈为空!')
- else:
- return self.stack.pop()
- #top是取栈顶,因为是栈顶,所以每次取的都是列表最后一个元素。
- def top(self):
- if not self.stack:
- print('警告:栈为空!')
- else:
- return self.stack[-1]
- #栈底和栈顶相反。
- def bottom(self):
- if not self.stack:
- print('警告:栈为空!')
- else:
- return self.stack[0]
复制代码 |
|