逆波兰表达式
但是一般来说逆波兰表达式应该是后缀表达式才对,前缀应该是波兰表达式。但是题目既然定义了那就说是逆波兰把。
首先就是逆波兰表达式的定义了。1,一个数是一个逆波兰表达式,值为该数(注意)。2,“运算符 逆波兰表达式 逆波兰表达式”表达式的值为这个两个逆波兰表达式的值的运算的结果。
你看逆波兰表达式由逆波兰表达式组合成的,这个肯定式用递归来做咯。
1 #include
2 #include
3 #include
4 using namespace std;
5 double exp(){
6 char s[20];
7 cin>>s;
8 switch(s[0]){
9 case '+':return exp()+exp();
10 case '-':return exp()-exp();
11 case '*':return exp()*exp();
12 case '/':return exp()/exp();
13 default return atof(s);
14 break;
15 }
16 }
17 int main()
18 {
19 printf("%lf",exp());
20 return 0;
21 }
这里解释一下atof是把字符串转化成浮点数的函数,是c++自带的函数。这个不是运算符的情况就是上面的第一种的逆波兰表达式的定义——也就是只有一个数。