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

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

  • 相关阅读:
    Java的代码风格
    哪些你容易忽略的C语言基础知识
    Java基础学习笔记第二章
    Java代码性能优化总结
    Java并发编程(2):线程中断(含代码)
    C语言代码训练(一)
    数控G代码编程详解大全
    PLC编程算法
    博客转移到新地址
    一些吐槽
  • 原文地址:https://www.cnblogs.com/yhrfighting123/p/10630515.html
Copyright © 2020-2023  润新知