首页 > 试题广场 >

表达式a*(b+c)-d的后缀表达式是()

[单选题]
表达式a*(b+c)-d的后缀表达式是()
  • abcd*+-
  • abc+*d-
  • abc*+d-
  • -+*abcd
B
将表达式用树表示为:
          -   
     *        d
  a      +
       b   c

后缀表达式为:a b c + * d -
编辑于 2021-01-11 10:11:42 回复(0)
选择B:
表达式 a*(b+c)-d是中缀表达式,转化成二叉树后,它是中序遍历的结果
二叉树如下图:
______(-)_________
_____/___\________
____(*)__(d)______
____/__\__________
__(a)__(+)________
______/___\_______
____(b)___(c)_____
后缀表达式,就是后序遍历该二叉树,所得到的序列,也就是:abc+*d-
同样的道理,前缀表达式是前序遍历二叉树,所得到的序列,是:-*a+bcd

发表于 2015-09-11 22:49:28 回复(5)
后缀表达式:如果读到操作数,把操作数压栈;如果读到运算符,弹出两个操作数进行运算,然后把结果压栈,如此重复。
发表于 2016-09-05 11:25:11 回复(1)
一个中缀式到其他式子的转换方法~~  
这里我给出一个中缀表达式~  
a+b*c-(d+e)  
第一步:按照运算符的优先级对所有的运算单位加括号~  
        式子变成拉:((a+(b*c))-(d+e))  
第二步:转换前缀与后缀表达式  
        前缀:把运算符号移动到对应的括号前面  
              则变成拉:-( +(a *(bc)) +(de))  
              把括号去掉:-+a*bc+de  前缀式子出现  
        后缀:把运算符号移动到对应的括号后面  
              则变成拉:((a(bc)* )+ (de)+ )-  
              把括号去掉:abc*+de+-  后缀式子出现  
发现没有,前缀式,后缀式是不需要用括号来进行优先级的确定的。  

如果你习惯拉他的运算方法。计算的时候也就是从两个操作数的前面  
或者后面找运算符。而不是中间找,那么也就直接可以口算拉,故答案为B
编辑于 2016-09-30 15:32:22 回复(3)
发表于 2017-08-15 21:25:43 回复(0)
将给定的中缀表达式分别加上括号即((a*(b+c))-d)
一层一层的剥掉,把符号放到后面即可
原式 = ((a*(bc+)) - d)
        = ((a(bc)+*)) - d)
        = ((a(bc)+*))d-
去掉所有的括号即:abc+*d-
发表于 2018-10-07 16:37:09 回复(0)
后缀表达式跟后序遍历是一样的。
发表于 2018-01-04 10:58:07 回复(0)
将中缀表达式转换为后缀表达式时,转换规则为将数字输出,遇到符号则该符号与栈顶符号的优先级,是右括号或者比当前栈顶元素的优先级低则将栈顶(优先级比当前高的)出栈;否则将该符号入栈,
发表于 2017-05-09 20:26:50 回复(0)
后缀表达式又称逆波兰式,是关于栈的操作
发表于 2016-09-15 14:46:19 回复(0)
规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出 并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。
1. 在结尾加一结束符:a*((b-c)/d+e)#
2. 处理过程:
输入    输出            更新后的栈内容(自底到顶)
a       a
*       a               *
(       a               *(
(       a               *((
b       ab              *((
lvl(-)=1, lvl(()=0
-       ab              *((-
c       abc             *((-
)       abc-            *(
lvl(/)=2, lvl(()=0
/       abc-            *(/
d       abc-d           *(/
lvl(+)=1, lvl(/)=2
+       abc-d/          *(+
e       abc-d/e         *(+
)       abc-d/e+        *
#       abc-d/e+*
发表于 2015-09-16 13:27:45 回复(0)
将中缀表达式转换为后缀表达式时,转换规则为将数字输出,遇到符号则该符号与栈顶符号的优先级,是右括号或者比当前栈顶元素的优先级低则将栈中的依次出栈;否则将该符号入栈,
发表于 2015-09-02 09:52:11 回复(0)