栈的实现Python

栈是一种数据结构,它的特性是“线性的”,“只能在一端进行操作”,“后进先出LIFO”
可以把栈想象成一座楼,楼的底部就是栈底,顶部就是栈顶。比如说我们在盖一座楼的时候,从一楼开始盖,然后逐步盖二楼,三楼。。。每盖一座楼就相当于入栈,也叫压栈。(换句话说,就是你在入栈的时候,一定是先把数据放在底部,然后逐步向上“叠加”)。(假设拆楼只能从顶楼开始拆),拆楼的时候,拆完顶楼,才能拆次顶楼。也就是只能先把最上面的拆了,逐步向下拆,这个过程就叫出栈,也就弹栈。
还有一个形象的例子就是弹夹,装子弹和打枪的时候就相当于入栈和出栈。
采用Python中列表数据类型实现栈。栈的基本操作就是入栈push,出栈pop,判断是否非空,栈的长度,只查看栈顶元素,并不取出来。
其实列表数据类型,它的第一个元素可以作为栈的底部,也可以作为顶部。作为底部的话,入栈的时候,list直接追加append即可,作为顶部的话,那入栈就需要insert操作在下标0即可,不过时间复杂度会变成O(n)了,不划算。同理pop也是。

class Stack(object):
    '''采用list实现栈,list最后作为栈顶,list最开始作为栈底'''
    
    def __init__(self):
        self.lt = []

    def isEmpty(self):
        return self.lt == []

    def push(self, item):
        self.lt.append(item)

    def pop(self):
        return self.lt.pop()

    def peek(self):
        return self.lt[-1]

    def size(self):
        return len(self.lt)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值