2017/02/10
栈需要注意的地方:
一定要检查,栈是否为空、栈是否满了。
栈的相关应用。
栈的特性:先进后出。或者说,后进先出。
递归的函数调用,一层一层的,先返回的都是后面进去的。这也是栈的一个重要应用,函数调用,返回地址一层一层的叠加上去。


1、括号平衡问题
问题描述:
最典型的例子,编译器在检查语法错误的时候会进行括号的检查,查看该等式是否平衡。即是否有一个右括号与左括号相对应,并且不交叉出现。
根据书上的内容,用自己的话总结出来的解决方案。
解决方案:
首先强调,利用栈先进后出的特性,这一点很重要。这是对后续的应用的理解基础。
0)定义一个空栈(具体栈的使用方式,使用链表还是用数组,我觉得都可以。实际情况中,使用数组更好,最好定义一个稍微大点的数组,毕竟语法检查,不应该占用太多的内存。)
1)读取文件(或者说,我试验情况下,读取表达式)
2)遇到左操作符时,将该符号入栈。
3)遇到右操作符时,先对栈进行检查
---若栈为空,则报错
---栈不为空,弹出栈顶元素,若与正在处理的右操作符相配,则继续处理
---栈不为空,弹出栈顶元素,若与正在处理的右操作符不相符,则报错
4)一直读取,循环处理2)和3),若读取结束,检查此时栈的状态,若不为空,也报错
后期思考:
我个人觉得,这个问题其实属于比较简单的,但仔细思考,这个例子比较贴切的表述了栈先进后出的特性。因为括号这个问题,我先读取的,肯定是左边的符号,中间还可能掺杂着一些其他的内容,但是首先遇到的右操作符必然是后进去的。


2、表达式问题
几个应用:计算后缀表达式,将中缀表达式转化为后缀表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值