/* 后序式的运算 说明: 将中序式转换为后序式的好处是,不用处理运算子先后顺序问题,只要依序由运算式由前往后读取即可。 解法: 运算时由后序式的前方开始读取,遇到运算元先存入堆叠,如果遇到运算子,则由堆叠中取出两个运算元进行对应的运算,然后将 结果存回堆叠,如果运算式读取完毕,那么堆叠顶的值就是答案了,例如我们计算12+34+* 这个运算式 (也就 是(1+2)*(3+4) ): 读取 堆叠 1 1 2 12 + 3 3 33 (1+2后存回) 4 334 + 37 (3+4后存回) * 21 (3*7后存回) */ #include <stdio.h> #include <stdlib.h> void evalPf(char* ); double cal(double, char, double); int main(void) { char input[80]; printf("input the postfix: "); scanf("%s", input); evalPf(input); return 0; } void evalPf(char* postfix) { double stack[80] = {0.0}; char temp[2]; char token; int top = 0, i = 0; temp[1] = '