首页 > 试题广场 >

已知-算术表达式的中缀表达式为a-(b+cd)*e,其后缀

[单选题]
已知-算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()
  • -a+b*c/d
  • -a+b*cd/e
  • -+*abc/de
  • abcd/+e*-
这里我给出一个中缀表达式:a+b*c-(d+e)
第一步:按照运算符的优先级对所有的运算单位加括号:式子变成了:((a+(b*c))-(d+e))
第二步:转换前缀与后缀表达式
前缀:把运算符号移动到对应的括号前面
则变成了:-( +(a *(bc)) +(de))
把括号去掉:-+a*bc+de 前缀式子出现
后缀:把运算符号移动到对应的括号后面
则变成了:((a(bc)* )+ (de)+ )-
把括号去掉:abc*+de+- 后缀式子出现
发表于 2015-09-05 11:44:51 回复(26)
选D。
后缀表达式不包含括号,运算符 放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则
先是c/d写为cd/,(b+c/d)写为bcd/+,(b+c/d)*e写为bcd/+e*,a- ( b+c/d)*e写为abcd/+e*-。
故答案选D
编辑于 2021-01-12 11:49:28 回复(2)

发表于 2017-08-30 20:41:04 回复(3)
总结了前中后缀表达式的特点,以及相互转换的规则及例子:


编辑于 2019-10-21 16:52:52 回复(0)
按优先级依次把连个数间的符号移到最后:
1、优先级最高为(b+c/d)*e (把(b+c/d)看为一个数): a-(b+c/d)e*
2、最高级又为c/d:a-(b+cd/)e*
3、最高级为括号内容(b+cd/),忽略括号:a-bcd/+e*
4、最后剩下-号:abcd/+e*-
注意优先级
发表于 2016-09-02 18:06:52 回复(0)

中缀表达式a + b*c + (d * e + f) * g,其转换成后缀表达式则为a b c * + d e * f  + g * +。

转换过程需要用到栈,具体过程如下:

1)如果遇到操作数,我们就直接将其输出。

2)如果遇到操作符,则我们将其放入到栈中,遇到左括号时我们也将其放入栈中。

3)如果遇到一个右括号,则将栈元素弹出,将弹出的操作符输出直到遇到左括号为止。注意,左括号只弹出并不输出。

4)如果遇到任何其他的操作符,如(“+”, “*”,“(”)等,从栈中弹出元素直到遇到发现更低优先级的元素(或者栈为空)为止。弹出完这些元素后,才将遇到的操作符压入到栈中。有一点需要注意,只有在遇到" ) "的情况下我们才弹出" ( ",其他情况我们都不会弹出" ( "。

5)如果我们读到了输入的末尾,则将栈中所有元素依次弹出。

发表于 2017-08-18 15:01:51 回复(0)
这个非常简单,该中缀表达式首先可以看成两次子项,第二个子项前的运算符为-,所以后缀表示法的结尾肯定是“-”。 结论:后缀表示法的结尾肯定是中缀表示法最后一个子项前的运算符。 在下屡试不爽,如有不当之处,望相告
编辑于 2016-11-07 00:32:42 回复(0)
按优先级依次把连个数间的符号移到最后:
1、优先级最高为(b+c/d)*e (把(b+c/d)看为一个数): a-(b+c/d)e*
2、最高级又为c/d:a-(b+cd/)e*
3、最高级为括号内容(b+cd/),忽略括号:a-bcd/+e*
4、最后剩下-号:abcd/+e*-
发表于 2016-02-03 23:09:02 回复(0)
先将表达式画成二叉树,再后序遍历
发表于 2017-06-12 15:52:27 回复(0)
菜狗一枚,后三到题全是后缀形式为什么,刚好又不懂,吐了😂😂
发表于 2022-04-12 19:53:22 回复(0)
前序遍历:根左右、中序遍历:左根右、后序遍历:左右根, 中序跟后序,第一个都是左,所以选D
发表于 2020-08-04 15:25:55 回复(0)
d
发表于 2019-05-01 16:54:47 回复(0)
中序遍历,运算符一定是父节点,可以画出二叉树,也可以根据根节点是最后一个被遍历 的,来进行排除
发表于 2017-09-05 09:04:10 回复(0)
双目运算符取其左边紧邻的两个数进行运算
发表于 2015-07-01 16:46:06 回复(0)