栈
栈是一种数据结构,如图:
在python中没有栈,所以我们要自己动手写一个栈
#有严重的并发问题 class StackEmptyError(Exception): pass class StackFullError(Exception): pass class Stack: def __init__(self,size): self.index = 0 self.size = size self.lst = [] def push(self,el): if self.index < self.size: self.lst.insert(self.index,el) self.index += 1 else: raise StackFullError("The Stack is full!.") def pop(self): if self.index > 0: self.index -= 1 return self.lst[self.index] else: raise StackEmptyError("The Stack is empty!.")
栈的特点:INLO 先进后出
栈可以类似于你放一个容器中放东西,最先放入的东西在最底下,最后放入的东西在最上边,所以我们要想拿东西,最先拿到的是最后放进入的,最后拿到的是最先放进去的
栈的最基本功能:
1.出栈(往容器中放东西,应该要拿出来吧) push
#上边已将创建了一个栈,所以我在下边直接用 a = Stcak(5) #实例化一个栈,穿入栈的大小 a.push("包子") #包子入栈 a.push("馒头") #馒头入栈 a.push("花卷") #花卷入栈
#往栈中放了好多东西.我们来看一下 print(a.lst)
运行结果:
2.入栈(我们可以往容器中放东西) pop
print(a.pop()) print(a.pop) print(a.pop)
运行结果:
我们发现,出栈的顺序与入栈的顺序刚好相反,印证了FILO的特性
最后,我们总结一下:
栈的属性:
1.容器(列表) 2.大小(size) 3.项顶指针(指的是下一个元素的位置)
栈的基本功能:
1.入栈(push) 2.出栈(pop)
栈的特性:FILO 先进后出