栈是一种数据结构,如图:

在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  先进后出

原文地址:https://www.cnblogs.com/yhrfighting123/p/10630515.html