C++实现后缀表达式求值
时间: 2023-10-31 22:06:14 浏览: 126
后缀表达式求值
4星 · 用户满意度95%
C++实现后缀表达式求值的方法一般是使用栈来实现。具体步骤如下:
1. 定义一个操作数栈num,用于存储操作数。
2. 遍历后缀表达式数组,对于每个元素进行如下操作:
a. 如果是操作数,则将其转换为int类型并压入操作数栈num中。
b. 如果是运算符,则从操作数栈num中弹出两个操作数,进行相应的运算,并将结果压入操作数栈num中。
3. 遍历完后缀表达式数组后,操作数栈num中必定只剩下一个数,这个数就是表达式的运算结果。
4. 返回操作数栈num中的栈顶元素即可。
下面是一个示例代码:
```
int solve(vector<string> postexp) {
stack<int> num; //操作数栈
int len = postexp.size();
int i = 0;
while(i < len){
if(postexp[i] != "+" && postexp[i] != "-" && postexp[i] != "*"){
int tmp = atoi(postexp[i].c_str()) ; //操作数(string类型转换为int型)
num.push(tmp); //将操作数压入栈中
i++;
} else{
int opnum1 = num.top(); num.pop();
int opnum2 = num.top(); num.pop();
int res = 0; //运算结果
char op= postexp[i][0]; //字符串的第一个字符(实际上也只有一个字符)
switch(op){ //注意两个操作数的顺序,栈顶元素作为第二个操作数
case '+': res = opnum2 + opnum1; break;
case '-': res = opnum2 - opnum1; break;
case '*': res = opnum2 * opnum1; break;
case '/': res = opnum2 / opnum1; break;
default: break; }
num.push(res);
i++;
}
}
return num.top(); //最后栈中必定只剩下一个数,就是运算结果
}
```
阅读全文