黑马程序员技术交流社区

标题: 【上海校区】Python入门——栈 [打印本页]

作者: 不二晨    时间: 2019-3-15 16:34
标题: 【上海校区】Python入门——栈
一、什么是栈

栈是一系列对象的集合,这些对象的插入和删除遵循**后进先出(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]

---------------------
【转载,仅作分享,侵删】
作者:琪仔要转行回coder
来源:CSDN
原文:https://blog.csdn.net/lllllaaa77/article/details/88387048
版权声明:本文为博主原创文章,转载请附上博文链接!


作者: 不二晨    时间: 2019-3-20 16:55
奈斯,感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2