相对于逆波兰表达式的转换,逆波兰表达的计算可谓简单不少。
具体计算方法参考:http://www.cnblogs.com/vpoet/p/4659546.html
这里也大致梳理一下:
1.新建一个栈将逆波兰表达式的数字依次压入栈中
2.当遇到运算符时,出栈两个数同时将运算结果压栈
3.重复步骤2直到计算计算,栈中的元素即为逆波兰表达式的计算结果。
实现如下:
1 #include <iostream> 2 #include <stack> 3 using namespace std; 4 5 6 int operateprior(char a1) 7 { 8 int prior; 9 10 switch(a1) 11 { 12 case '(': 13 prior=0; 14 break; 15 case ')': 16 prior=0; 17 break; 18 case '+': 19 prior=1; 20 break; 21 case '-': 22 prior=1; 23 break; 24 case '*': 25 prior=2; 26 break; 27 case '/': 28 prior=2; 29 break; 30 case '%': 31 prior=2; 32 break; 33 } 34 return prior; 35 } 36 37 38 char* NiBoLanFun(char* Str) 39 { 40 stack<char> N; 41 stack<char> OP; 42 43 while(*Str!='