博主微信公众号(左)、Python+智能大数据+AI学习交流群(右):欢迎关注和加群,大家一起学习交流,共同进步!

 

一、栈

    栈是由一系列对象组成的一个集合,这些对象的插入和删除操作遵循后进先出(LIFO)的原则。

    用户可以在任何时刻向栈中插入一个对象,但只能取得或者删除最后一个插入的对象(即所谓的 “栈顶”)。

    例题1:

        (1)网络浏览器将最近浏览的网址存放在一个栈中。

        (2)每次当访问者访问一个新网站时,这个新网站的网址就被压入栈顶。

        (3)这样,浏览器就可以在用户点击 “后退” 按钮时,弹出先前访问的网址,以回到其先前访问的网页。

    例题2:

        (1)文本编辑器通常提供一个 “撤销” 机制以取消最近的编辑操作并返回到先前的文本状态。

        (2)这个撤销操作就是通过将文本的变化状态保存在一个栈中得以实现。

    1、栈的抽象数据类型(ADT)

        (1)stack.push(e)

            将一个元素 e 添加到栈 stack 的栈顶。

        (2)stack.pop(e)

            从栈 stack 中移除并且返回栈顶的元素,如果此时栈是空的,这个操作将出错。

        (3)stack.top()

            在不移除栈顶元素的前提下,返回一个栈 stack 的栈顶元素;若栈为空,这个操作会出错。

        (4)stack.is_empty()

            如果栈中不包含任何元素,则返回一个布尔值 True。

        (5)len(stack)

            返回栈 stack 中元素的数量;在 python 中,我们使用 __len__ 这个特殊的方法来实现它。

        按照惯例,我们假定一个新创建的栈是空的,并且其容量也没有预先的限制。添加进栈的元素可以是任何类型的。

        在一个初始化为整数类型的空栈 stack 中进行一系列操作的结果:

            

    2、简单的基于数组的栈实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值