C语言数据结构(写出下列中缀表达式的后缀表达式)

(1) -A+B-C+D 答案为 A-B+C-D+
(2) A*-B+C 答案为 AB-*C+
答案我是知道的,但我不知道是怎得来的,请懂的给我说说!麻烦了!!

答案知道是对的。。为什么会不知到为什么对呢。。

中缀表达式和我们平时的普通表达式差不多,而后缀表达式是遇到操作符进行归约的
比如(1)里的:A-。。。遇到-号,归约成-A(用X代替这个-A);XB+。。。碰到+号,归约成X+B(即:-A+B,这里的X+B用Y代替);YC-。。。碰到-号,归约成Y-C。。。后面照样归约就行了
我前面将的就相当于把后缀表达式翻译成中缀表达式,反过来的翻译方法其实也一样的

不知你明白没有,有问题可以再提追问

其实第一个我是知道的。。。,关键是第二个我不会,你能给我讲讲吗?怎么规约的?麻烦了!!

追答

我举的第一个例子其实是从后缀表达式归约到中缀表达式,下面就用第二个例子举例如何把中缀表达式归约为后缀表达式吧(原则是:单操作符碰到字母就归约(op num 归约成 num op),双操作符,两边都是字母才归约(num1 op num2 归约成 num1 num2 op),可以归约就马上归约):

A*-。。碰到的是负号“-”,而不是一个数字,所以等待负号归约,负号是单操作数,所以碰到B就归约成B-(用X代替这个B-);A*X。。满足归约条件,归约成AX*(用Y代替这个AX*);Y+C满足归约条件,归约成YC+。
归约完,依次代入:YC+ => AX*C+ => AB-*C+
看看数据结构的书应该就能懂了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-30
((((-A)+B)-C)+D) -A就是A-这当做一个数和B加就是A-B+这又是一个数了和C减A-B+C-这是一个数再来A-B+C-D+就出来了
(A*(-B))+C)按上面的方法,B-,AB-*,AB-*C+本回答被提问者采纳
第2个回答  2012-07-29
看数据结构啊,对应的表达式有对应的二叉树对吧,然后根据二叉树自己拆分追问

怎么画出这个题对应的表达式的对应的二叉树哪?谁做根,根的孩子结点的左右子树又是谁?

相似回答
大家正在搜