【软考2014年下半年】算术表达式(a-b)*(c+d)后缀表达式是()
A.ab-cd+*
B.abcd-*+
C.ab-*cd+
D.ab-c+d*
【解析】
对于编译原理中的文法分析在软考上午题中有1-2分,其中对于求后缀表达式的这类题目出题的次数也是很多的,对于做此类题目网上很多的方法让我感觉并不适合我们去快速解决此类题目,所以接下来 我就用我自己的思想和方法为大家展示下怎么快速的处理此类题目。
首先考到题干中要我们求(a-b)*(c+d)的后缀表达式那么我们首先将这个表达式的表达式树画出来,那么画表达式树怎么画?我们按照数据结构中二叉树的中序遍历方式将其画出来。如下所示:
将表达式树创建之后我们在按照题目需要的求后缀表达式通过数据结构二叉树后序遍历的思想来遍历也就是先左子树然后右子树最后根节点。
对于左边采用上面说的方法如下
左子树:a
右子树:b
根节点:-
组合下:ab-
对于右边采用上面一样的方法如下
左子树:c
右子树:d
根节点:+
组合下:cd+
接下来就是往上组合如下图所示
左子树:ab-
右子树:cd+
根节点:*
组合下:ab-cd+*
【总结】
对于这类求解后缀表达式的题目就是按照这种思路,先画出表达式树然后根据数据结构的二叉树后序遍历的思想去遍历,所以,碰到这种题目不管求前中后后缀式按照这种思想去解题很快就可以做出来的。