栈的应用——四则运算(后缀表达式)

后缀表示法(RPN)

通常将运算符写在运算量之间,例如a+b,这种表示法称为中缀表示法。后缀表示法又称逆波兰表示法,它是波兰逻辑学家卢卡西维奇发明的一种表示表达式的方法。又叫逆波兰(百度百科)

那么后缀表示法如何写出来的呢?
先看一个简单的例子
一个中缀四则表达式:
9+(3-1)x3+10/2
变成后缀表达式:
9 3 1 - 3 x + 10 2 / +
那么它是怎么变的呢?
先别急,我们先来看看计算机是如何计算后缀表达式的。
规则:
从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号就将栈顶的两个数字出栈,一直获得最终的结果。
(从左1列到右看)

132
3226105
999915151520

我们从左向右看:
后缀表达式前三个931都是数字!那么!进栈!!
然后他们遇到了减号!最上面两个出列!3-1=2!你给我回去!
就变成了第二列的92了。以此类推,直到最后。

中缀表达式变后缀表达式

在我们了解计算机如何去求后缀表达式之后。我们就能猜出如何去从一个中缀表达式去写一个后缀表达式
规则:
从左往右遍历
遇到数字,写它!
遇到符号,收入栈(含括号)
比较符号的优先级!然后拿出来,写它!
如此循环!
成了!
9+(3-1)x3+10/2
还是这个例子
我们可以这样思考
931
931-
931-3
931-3*
931-3*+
931-3*+10 2
931-3*+10 2/
9 3 1 - 3 * + 10 2 / +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值