栈的概念

栈(stack)是限制插入和删除只能在一端的线性表,该位置叫做栈的顶(top)。对栈的基本操作有个进栈(push)和出栈(pop)。最后插入的元素可以通过top()函数来访问。

栈也被叫做后进先出(LIFO,last in first out)表。下图展示了一个栈的抽象模型。一般的模型是,存在某个元素在栈顶,而该元素是唯一的可见元素。
在这里插入图片描述

栈的实现

  1. 数组实现
  2. 链表实现

栈的应用

平衡符号
https://blog.youkuaiyun.com/he626shidizai/article/details/89889739
以括号匹配为例:
实现一个空栈,读入字符到文件尾。如果字符是一个开放符号,则将其推入栈中,如果字符是一个封闭符号,则栈空时报错。否则,弹出栈顶元素,如果弹出的元素不是对应的开放符号,则报错。在文件尾,如果栈非空则报错。

该算法是线性的,即只需要遍历一遍输入。

后缀表达式
https://blog.youkuaiyun.com/he626shidizai/article/details/89890061
后缀表达式又叫做逆波兰式,例如算式 1 + 2的后缀表达式就是1 2 +,算式 1+ 2 * 3的后缀表达式就是1 2 3 * +。运算符在数后面。
当见到一个数就把使它入栈,见到一个符号就从栈中弹出两个数计算结果并入栈。

中缀表达式->后缀表达式
https://blog.youkuaiyun.com/he626shidizai/article/details/89890961
函数调用
当调用一个新的函数时,主调例程大的所有局部变量都需要存储起来。所存储的信息称为活动记录,或叫做栈帧。
在实际的计算机中栈常常是从内存分区的高端向下增长,而在许多系统中是不检测溢出的。而栈溢出总是可能发生的,常是致命的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值