#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++栈之中缀表达式求值
最新推荐文章于 2023-10-23 15:11:14 发布
本文介绍了一种使用栈数据结构来解析并计算数学表达式的算法。通过将输入字符串逐字符解析,判断字符类型(数字或运算符),利用栈进行数值和运算符的存储与处理,实现了对表达式的正确求值。此算法适用于仅有加减乘除四则运算的表达式求值。
5775

被折叠的 条评论
为什么被折叠?



