zoukankan      html  css  js  c++  java
  • Python 之“栈为何物”

    究竟栈为何物

    栈是一种线性数据结构,用先进后出或者是后进先出的方式存储数据,栈中数据的插入删除操作都是在栈顶端进行。
    栈是一种特殊的列表,栈内的元素只能通过一端进行访问,这一端为栈顶。

    Python 如何实现栈
    使用内置数据结构List 可以用来实现栈;
    使用append() 向栈顶添加元素;
    使用pop() 可以以后进先出的顺序删除元素;

    Python 实栈代码

     1  
     2 from logging import exception
     3 class testStack():
     4     def __init__(self,size):
     5         self.size=size #堆栈的大小
     6         self.stack_info=[]#堆栈的存放空间
     7         self.top=-1 #用来记录与判断栈的状态位
     8  
     9     def push(self,value): #进栈
    10         if(self.isfull()):
    11             raise exception("stack is full")
    12         else:
    13             self.stack_info.append(value)
    14             self.top+=1
    15  
    16     def pop(self):#出栈
    17         if(self.isempty()):
    18             raise exception("stack is empty")
    19         else:
    20             self.top-=1
    21             # print(self.top)
    22             self.stack_info.pop()
    23  
    24     def sizes(self):#计算栈的长度
    25         return len(self.stack_info)
    26  
    27     def isfull(self): #判定栈是否满了
    28         return self.top+1==self.size
    29  
    30     def isempty(self): #判定栈是否是空
    31         return self.top==-1
    32  
    33     def showStack(self):#打印栈内容
    34         print(self.stack_info)
    35  
    36     def clean(self):#清空栈
    37         self.stack_info.clear()
    38  
    39 if __name__ == '__main__':
    40     s=testStack(10)
    41     for i in range(10):
    42         s.push(i)
    43         print(s.sizes())
    44         s.showStack()
    45     for i in range(10):
    46         s.pop()
    47         print(s.sizes())
    48         s.showStack()

    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    从上往下打印二叉树
    栈的压入、弹出序列
    连续子数组的最大和
    链表中环形的入口
    1月项目痛点
    problem:vue组件局部刷新,在组件销毁(destroyed)时取消刷新无效问题
    重点:浏览器的工作原理
    12月中旬项目中出现的几个bug解决方法的思考
    12月中项目问题复盘之对项目进度把控的反思
    problem: vue之数组元素中的数组类型值数据改变却无法在子组件视图更新问题
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/13600713.html
Copyright © 2011-2022 走看看