首页 > 试题广场 >

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

[单选题]
表达式(a-b)*(c+5)的后缀式是
  • a b c 5 + * -
  • a b – c + 5 *
  • a b c - * 5 +
  • a b- c 5 + *
首先要了解什么是后缀式,后缀式是一种指把运算符号写在运算数后面的表达式。最大的特点是省去了括号。
例如:a+b的后缀式为ab+;
后缀式的解法:
1.从左到右找到第一个运算符
2.使用该运算符计算其前面紧挨的两个数值并作为一个新的运算数
3.依次寻找下一个运算符并计算其前两“个”运算数
例:(a+b)*c/d的后缀式为:ab+c*d/

发表于 2017-02-13 17:28:53 回复(0)
考的是表达式二叉树知识,把整个公式可以树型结构存储,节点存放符号,叶子节点存放数字,后缀表达式就是对其二叉树后序遍历。
编辑于 2017-09-13 20:28:35 回复(0)
首先根据算数表达式判断运算符的优先级:如(a-b)*(c+5)的运算符优先级为:-,+,* ;

然后,如果用二叉树解法:优先级低的运算符作为根节点,以此类推,操作数均为叶子结点,依照中序遍历法则写出二叉树,再进行后序遍历,得到后缀式。

如果使用栈的方法:
1.当读到数字直接送至输出队列中
2.当读到运算符t时,       
       a.将栈中所有优先级高于或等于t的运算符弹出,送到输出队列中;      
       b.t进栈
3.读到左括号时总是将它压入栈中
4.读到右括号时,将靠近栈顶的左括号里面的运算符全部出栈,再丢弃左括号。
编辑于 2017-09-14 14:59:51 回复(0)
答案选 D   后缀表达式的计算方法可以表示为ab-c5+*  且实现这种表达式的转换可以通过栈这种数据结构实现。
发表于 2017-02-19 21:46:25 回复(0)