逆波兰算法的表示:所有的运算符都跟在操作数的后面。
(1-2)*(4+5)表示为1 2 - 4 5 + *,
从左到右依次将操作数压入栈中,当运算符到达时,根据运算符从栈中取出相应数目的操作数,计算结果,并将结果压入栈中。例如:现将1,2压入栈中,接着遇到了+,是一个二元操作符,因此从栈中取出两个操作数,计算结果,并将结果-1压入栈中,接着讲4,5压入栈中,接着又遇到了*,也是一个二元操作符,于是从栈中取出两个操作数(也即5和4),将计算结果9压入栈中,紧接着又遇到了*,还是一个二元操作符,于是又从栈中取出两个操作数(也即9和-1),讲计算结果-9压入栈中。当到达输入行的结尾时,将栈顶的元素作为最终的结果输出。
C语言代码描述:
main.c
#include<stdio.h>
#include<stdlib.h> //为了使用atof函数
#include "calc.h"
#