Python入门课程6——栈

一、什么是栈

栈是一系列对象的集合,这些对象的插入和删除遵循**后进先出(LIFO)**原则。
例如:将A压入栈,将B压入栈,将C压入栈,此时A在栈顶,C在栈底。此时弹出栈,会弹出A,再弹出栈,会弹出B,再弹出栈,会弹出C。

二、栈的抽象数据类型

栈是一种支持以下两种操作的抽象数据类型(ADT),下面用S表示一个栈的抽象数据类型实例:

  • S.push(e):将元素e添加到栈S的栈顶
  • S.pop():从栈S移除栈顶元素、并返回栈顶元素;若此时栈为空,此操作将出错

为了方便,我们定义了以下访问方法:

  • S.top():返回栈顶元素,但不移除栈顶元素;若此时栈为空,此操作将出错
  • S.is_empty():如果栈中不包含任何元素,则返回True
  • len(S):返回栈中元素的数量

三、栈的实现

1、基于数组的实现

通过list类中append(e)pop()方法实现栈的push()pop()

class Empty(Exception):       #对栈为空时,调用pop、top方法报错时定义一个Empty异常类实例
        pass

class ArrayStack:

    def __init__(self):
        self._data = []             #用列表实现栈

    def __len__(self):
        return len(self._data)

    def is_empty(self):
        return len(self._data) == 0

    def push(self,e):
        self._data.append(e)

    def pop(self):
        if self.is_empty():
            raise Empty('Stack is empty')
        return self._data.pop()

    def top(self):
        if self.is_empty():
            raise Empty('Stack is empty')
        return self._data[-1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值