#include <iostream>
#include <stack>
#include <string.h>
using namespace std;
int calNum(char * str){
int str_len = strlen(str);
stack<int> stack_num;
for (int x=0;x<str_len;x++){
char sample = str[x];
if (sample>='0' && sample<='9')
stack_num.push(sample-'0');
else{
int num=0;
int num1 = stack_num.top();
stack_num.pop();
int num2 = stack_num.top();
stack_num.pop();
if (sample=='-')
num = num2 - num1;
else if (sample == '+')
num = num2 + num1;
else if (sample == '*')
num = num2 * num1;
else if (sample == '/')
num = num2 / num1;
stack_num.push(num);
// cout << stack_num.top()<<"???"<<endl;
}
}
cout << stack_num.size()<<endl;
return stack_num.top();
}
int main() {
char r[20];
cin >> r;
cout << calNum(r)<<endl;
// cout << "test\n";
return 0;
}
c++栈之中缀表达式求值
最新推荐文章于 2022-11-21 22:57:57 发布