后缀表达式

一、什么是后缀表达式

后缀表达式是一种不需要括号的表达式

二、后缀表达式的运算顺序

当是数字的时候直接入栈

当是运算符号的时候

就将栈的最上面两个数拿出进行运算 后 再将结果进栈 记住(栈顶元素永远在运算符号的右边)

后缀表达式:9 3 1 - 3 x + 10 2 ÷ +

 第一步从左到右依次入栈 9 3 1

 现在栈从上到下1 3 9   进入符号 -   将1和3 拿出  3-1  =2 

栈顶元素永远在运算符号的右边(即栈顶元素1在“-”的右边)

然后再把2进栈

现在栈从上到下是 2 9 

再进入3

现在栈从上到下是 3 2 9

再运算符号 x 拿出 2x3 =6 再进栈

现在栈从上到下是 6 9

在运算+ 6+9=15

现在栈从上到下是 15

后缀表达式:9 3 1 - 3 x + 10 2 ÷ +

进入 10  2

现在栈从上到下是 2 10 15

运算 ÷  10÷2=5 5 进栈

现在栈从上到下是 5 15

最后运算+  15+5

得20

最后20出栈

后缀表达式:9 3 1 - 3 x + 10 2 ÷ +   =20


三、中缀表达式转化为后缀表达式

后缀表达式从左到右遍历,

1,是数字直接写上

2,是任何运算符号

①右括号----) 和优先级 不高于 栈顶元素 则 栈顶元素依次输出 并当前符号进栈(括号直接消失) 

直接上例子

中缀表达式 9+(3-1)x3+10÷2

从左到右

9 写上

当前表达式为 9

+ 入栈(目前栈空,栈空就进栈)

(     入栈

 目前栈里从上到下:(  +

3写上

当前表达式为 9  3

-  入栈

 目前栈里从上到下:-(  +

中缀表达式 9+(3-1)x3+10÷2

1写上

当前表达式为 9  3  1

)右括号 遇到右括号 输出栈顶元素 并抵消左括号

写上  -

当前表达式为 9 3 1 -

当前栈从上到下 +

中缀表达式 9+(3-1)x3+10÷2

x 优先级高于+ 直接入栈

3写上

当前表达式 9 3 1 - 3

当前栈从上到下 x +

接下来 +  判断优先级 +优先级小于x   x 出栈写上表达式

判断优先级  + 和+ 相同  属于 不高于  + 出栈 写上表达式  后面的+ 入栈

 当前表达式  9 3 1 - 3  x +

再后面 10 写上表达式

÷ 判断优先级 高于+  进栈

2 写上

当前表达式 9 3 1 - 3 x + 10  2

当前栈从上到下 ÷ +

由于已经没有符号和数字了

栈内依次出栈并写入表达式

最后得出 9 3 1 - 3 x + 10  2  ÷ +

总结一下:运算符入栈时如果优先级低于栈顶元素,则栈顶的优先级高的先出栈,如果运算符相等的话也出栈一个

                        
参考原文链接:https://blog.csdn.net/a8425/article/details/119253258

本人根据学习又补充和总结了一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值