【数据结构】python中的栈

python中的栈

在各种编程语言数据结构体系中,栈是一种基础数据结构,也是一种常用数据结构

特点

后入先出

常用函数

以python编程语言为例。栈可以使用列表数据结构来实现

栈定义

# python 使用列表来定义栈
stack = []

入栈

# 将元素压入栈
stack.append( a )

入栈其实实现的是对数据的增加

出栈

# 将栈顶元素弹出栈,并返回该元素(只能弹出栈顶元素)
stack.pop() 

出栈其实实现的是对数据的删除,始终删除的是栈顶的元素,同时会返回该元素

获取栈顶元素

# 获取栈顶元素
stack[-1]

和出栈函数的相似的是 都能获取栈顶元素,但不同的时,出栈函数会删除栈顶元素,stack[-1]则不会删除。

为啥是-1,不是1 呢?

由于python栈使用列表实现的,栈顶元素其实就是列表最后一个元素,按照列表的反向索引,最后一个元素,可以使用-1索引去访问,当然可以按正向的,使用len -1 去访问,但总归还要计算一个len,没有-1来的直接。

栈是否为空

# 如果栈为空
if not stack:
   statement

应用场景

语法编译

编译器在词法分析时,处理括号、花括号,就是使用了栈数据结构

递归函数

每次递归函数调用会把局部变量、参数、返回地址 压入栈中,每次调用完就可以返回上一层位置

括号匹配问题(最经典)

也类似编译器词法分析里 对括号和花括号处理

字符串去重问题

处理相邻重复字符串去重问题

经验总结

1 如果只想获取栈顶元素,而不删除,则可以使用stack[-1]

2 想要遍历栈,貌似只能从栈顶元素不断弹出

3 python实现栈是使用的列表,那就意味着使用stack[n]或者stack[-n]可以遍历栈的元素,也就是把栈当列表使用,但这个时候,栈就不叫栈了吧

4 栈是一端封口,元素从另一端放入和取出,可以根据这句话感受下栈元素变化的特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值