中缀表达转后缀表达式小技巧+通过后缀表达式求值

简介: 在考研中,经常会考中缀表达转后缀表达式,那什么是中缀表达?什么是后缀表达式?我举两个例子大家一个就清楚了

0、简介

       在考研中,经常会考中缀表达转后缀表达式,那什么是中缀表达?什么是后缀表达式?我举两个例子大家一个就清楚了

中缀表达式 :2 + (3 * 5)【就是我们平常写的计算的式子】

后缀表达式 :2 3 5 * +

接下来我教大家一个超级好用的小技巧,保证看一眼就会🙆‍♂️

1、中缀表达转后缀表达式小技巧

我以下列式子为例

a + b*c + ( d*e + f ) * g  

首先我们从左向右加括号【先乘除后加减】

然后我们把对应的符号到表达式(括号)外面【只拉一次】

最后去掉括号即为后缀表达式

2、通过后缀表达式求值

我把abcdefg的值代入上式,如下

1 + 2*3 + ( 4*5 + 6 ) * 7  = 189

则该式的后缀表达式为: 123*+45*6+7*+

那我们如何通过后缀表达式求得原式的值呢?

我们先画一个栈,通过栈的特性求出

栈:先进后出

第一步:我们从左到右把数字放到栈中,遇到运算法把栈最上面两个元素弹出

第二步:遇到运算符,把栈顶两个数字弹出,最先弹出的数字方在运算符右边,第二个弹出的数字放到运算符左边。计算出值放入栈中。

注意:两个数字的位置一定不能反,如果运算符为 ‘-’ ,则算出的值就与原值相反。

第三步:继续进行以上操作,知道表达式算完,最后栈中的值就是表达式的值。

相关文章
|
11月前
【逆波兰表达式求值】
【逆波兰表达式求值】
|
3月前
|
存储 算法 C语言
C语言编程—中缀表达式转换为后缀表达式
1.创建栈 2.从左向右顺序获取中缀表达式 a.数字直接输出 b.运算符 情况一:遇到左括号直接入栈,遇到右括号将栈中左括号之后入栈的运算符全部弹栈输出,同时左括号出栈但是不输出。 情况二:遇到乘号和除号直接入栈,直到遇到优先级比它更低的运算符,依次弹栈。 情况三:遇到加号和减号,如果此时栈空,则直接入栈,否则,将栈中优先级高的运算符依次弹栈(注意:加号和减号属于同一个优先级,所以也依次弹栈)直到栈空或则遇到左括号为止,停止弹栈。(因为左括号要匹配右括号时才弹出)。 情况四:获取完后,将栈中剩余的运算符号依次弹栈输出 例:将:2*(9+6/3-5)+4转化为后缀表达式 2 9
58 0
|
5天前
|
算法
【算法】栈算法——逆波兰表达式求值
【算法】栈算法——逆波兰表达式求值
|
3月前
|
索引
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
29 0
|
3月前
彻底大悟!逆波兰表达式求值(150)
彻底大悟!逆波兰表达式求值(150)
中缀表达式转后缀表达式(逆波兰式)
中缀表达式转后缀表达式(逆波兰式)
137 0
|
3月前
逆波兰表达式求值
逆波兰表达式求值
47 1
|
算法
中缀表达式转后缀表达式(1、2、3) 2021-03-26
中缀表达式转后缀表达式(1、2、3) 2021-03-26
129 0
中缀表达式转后缀表达式(1、2、3) 2021-03-26
|
存储
中缀表达式转化为后缀表达式
中缀表达式转化为后缀表达式
后缀表达式
后缀表达式
85 0