python算法详解脚本之家_Python算法应用实战之栈详解

栈(stack)

栈又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并且按照先进后出,后进先出的规则进行运作。

如下图所示

例如枪的弹匣,第一颗放进弹匣的子弹反而在发射出去的时候是最后一个,而最后放入弹匣的一颗子弹在打出去的时候是第一颗发射出去的。

栈的接口

如果你创建了一个栈,那么那么应该具有以下接口来进行对栈的操作

接口

描述

push()

入栈

pop()

出栈

isEmpty()

判断是否为空栈

length()

获取栈的长度

getTop()

取栈顶的元素,元素不出栈

知道栈需要上述的接口后,那么在Python中,列表就类似是一个栈,提供接口如下:

操作

描述

s = []

创建一个栈

s.append(x)

往栈内添加一个元素

s.pop()

在栈内删除一个元素

not s

判断是否为空栈

len(s)

获取栈内元素的数量

s[-1]

获取栈顶的元素

Python中的栈接口使用实例:

# 创建一个栈

In [1]: s = []

# 往栈内添加一个元素

In [2]: s.append(1)

In [3]: s

Out[3]: [1]

# 删除栈内的一个元素

In [4]: s.pop()

Out[4]: 1

In [5]: s

Out[5]: []

# 判断栈是否为空

In [6]: not s

Out[6]: True

In [7]: s.append(1)

In [8]: not s

Out[8]: False

# 获取栈内元素的数量

In [9]: len(s)

Out[9]: 1

In [10]: s.append(2)

In [11]: s.append(3)

# 取栈顶的元素

In [12]: s[-1]

Out[12]: 3

一大波实例

在了解栈的基本概念之后,让我们再来看几个实例,以便于理解栈。

括号匹配

题目

假如表达式中允许包含三中括号()、[]、{},其嵌套顺序是任意的,例如:

正确的格式

{()[()]},[{({})}]

错误的格式

[(]),[()),(()}

编写一个函

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值