zoukankan      html  css  js  c++  java
  • 栈是一种数据结构,如图:

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

  • 相关阅读:
    线性回归——梯度下降
    Python 实现 KNN(K-近邻)算法
    Python 增加博客园阅读量
    阿里云CentOS安装配置Python3.7及pip3
    OnlineJudge难度与正确度的相关性检验
    jsp、jQuery、servlet交互实现登录功能
    Java Web中提交表单之后跳转到WebContent目录下的子目录里的jsp文件
    python3爬虫——下载unsplash美图到本地
    defer原理、性能、优化
    Python生成器和迭代器
  • 原文地址:https://www.cnblogs.com/yhrfighting123/p/10630515.html
Copyright © 2011-2022 走看看