Python实现堆栈

堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。

我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。可先将Stack类写入文件stack.py,在其它程序文件中使用from stack import Stack,然后就可以使用堆栈了。

stack.py的程序:

代码如下:

class Stack():  
    def __init__(self,size):  
        self.size=size
        self.stack=[] 
        self.top=-1
    def push(self,ele):  #入栈之前检查栈是否已满  
        if self.isfull():  
            raise exception("out of range")
        else:  
            self.stack.append(ele) 
            self.top=self.top+1
    def pop(self):             # 出栈之前检查栈是否为空  
        if self.isempty():  
            raise exception("stack is empty") 
        else:  
            self.top=self.top-1 
            return self.stack.pop()
       
    def isfull(self):  
        return self.top+1==self.size
    def isempty(self):  
        return self.top==-1

再写一个程序文件,stacktest.py 使用栈,内容如下:

代码如下:

#!/usr/bin/python
from stack import Stack
s=Stack(20)
for i in range(3):  
    s.push(i)
s.pop()
print s.isempty()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

分享一个“节约生命”的技巧,和几个技术公众号

任何一个信息都可以把人分为两类,知道的和不知道的。有些我们已知的信息,自己觉得很平常,却可能对另一些不知道的人来说很有用处。

19110
来自专栏磐创AI技术团队的专栏

快速学习 Python 的全套 14 张思维导图(附高清版下载)

基础知识图一包括了基本规则、Python语言特点、计算机语言、如何运行Python、变量赋值五个方面,辅助你快速掌握Python编程的基底知识。

33630
来自专栏老司机的技术博客

golang学习笔记5:字符串及相关函数

字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。UTF-8 是被广泛使用的编码格式,...

18530
来自专栏Python小屋

Python使用OpenCV+pillow提取AVI视频中关键帧图像

问题描述:使用OpenCV把AVI视频切分成静态图像,提取视频中的关键帧,保存为0.jpg、1.jpg、2.jpg.......

88750
来自专栏Crossin的编程教室

爬虫万金油,一鹅在手,抓遍全球

第一点没什么捷径可走,套路见得多了,也就有经验了。关于第二点,今天咱们就来介绍一个小工具,在某些需求场景下,或许可以给你省不少事。

15720
来自专栏Crossin的编程教室

我是如何在自学编程9个月后找到工作的

昨天在我在国外网站 reddit 上看到一篇文章,作者分享了他自学编程 9 个月后找到工作的经历。文章不到一天就得到3千多赞,2百条回复。我看了下内容,非常中肯...

33830
来自专栏Crossin的编程教室

Python零基础入门在线课程 | Crossin的编程教室出品

“码上行动”是“Crossin的编程教室”经过5年积累后推出的一项服务,目的是为了让编程初学者,尤其是自学者,更快地找到正确的学习方向,提高编程水平。

32630
来自专栏小詹同学

排名第 1 ,Python 到底有什么魔力 !?

根据 PYPL 发布的 7 月编程语言指数榜,Python 保持上涨趋势,8月流行指数再次上涨 5.5%,以 23.59% 的份额甩开 Java 排名第一,并逐...

32850
来自专栏Crossin的编程教室

给初学者的深度学习入门指南

这个阶段有吴恩达、李飞飞、GeoffreyHinton、Ian Goodfellow等传奇人物的卓越贡献

25640
来自专栏Python小屋

Python线性代数扩展库numpy.linalg中几个常用函数

本文内容节选自董付国老师2000页Python系列课件第17章“数据分析、科学计算、可视化、机器学习”(本章PPT共410页)。

20730

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励