小白数据结构学习--栈

栈为何物

栈(stack)是一种操作受限制的线性表,只允许一端进行插入删除操作的数据结构,即先进后出,后进先出的数据结构。
有点类似我们放盘子,最后放上去的盘子总是最先拿下来。

栈的实现和特点

栈很多时候可以被数组和链表替代,但由于数组和链表的可操作性高,同时会带来的就是不可控性,当我们只需要在一端操作,满足先进后出、后进先出的时候,我们就可以使用栈来进行操作。

栈的应用

栈的实际应用有很多种情况,列举一下几种:

栈在计算中的使用

3+4*5-6

这个代码对于人脑来说太简单了,很容易就算出来,但是对于计算机来说,他并不能判断应该按怎么样的顺序去计算,在什么时候计算,这个时候栈就可以使用了。
我们可以对表达式做一遍历,设置两个栈分别为计数栈和操作符栈,
1、当遍历到为数字时便将其压入计数栈,遍历到操作符栈的时候。
2、(1)如果操作符的优先级小于栈顶的操作符,则把其压入操作符栈,(2)如果操作符的优先级大于或等于栈顶操作符,则弹出两个计数栈中的数与操作符进行计算后再压入计数栈,遍历结束便可得到结果。

栈在网页前后翻页中的使用

当在浏览器中进行转到上一页或者下一页的操作时,也是使用栈来实现的,使用两个栈分别为前一页栈和后一页栈。
1、当首次阅览时,讲网页地址一次压入前一页栈。
2、当点击转到前一页时,弹出一个前一页栈的网址,压入后一页栈中,同样点击转到后一页时,从后一页栈中弹出一个网址压入前一页栈中。在栈空的时候点击跳转无效。

栈在括号匹配中的使用

需要检测括号是否匹配,譬如说:

{[()]}//这是一个匹配的括号组
{(})[]//这是一个不匹配的括号组

在进行括号匹配的时候可以使用栈来操作,当遍历到的为左括号时,压入栈,遍历到为右括号时,从栈中弹出一个左括号,如果不匹配则返回不匹配值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值