C78-逆波兰表达式(后缀)
2025-10-18 12:38:40
发布于:江苏
13阅读
0回复
0点赞
一、中缀转后缀表达式

二、后缀表达式的计算过程

三、参考程序
#include <bits/stdc++.h>
#include <stack>
using namespace std;
string s;
int ans;
stack<int> stk;
int main(){
getline(cin, s);
int len = s.size();
for (int i=0; i<len; i++){
int sum = 0;
while (isdigit(s[i])){ //如果是数字
sum = sum*10 + s[i]-48;
i++;
}
if (sum != 0) stk.push(sum);
//遇到符号则出栈
if (s[i] == '+' || s[i] == '-' || s[i]=='*' || s[i]=='/'){
int num2 = stk.top();//先弹出第二操作数
stk.pop();
int num1 = stk.top();//再弹出第一操作数
stk.pop();
switch(s[i]){
case '+': stk.push(num1+num2); break;
case '-': stk.push(num1-num2); break;
case '*': stk.push(num1*num2); break;
case '/': stk.push(num1/num2); break;
}
}
}
cout << stk.top();
// while (stk.size()){
// cout << stk.top() << endl;
// stk.pop();
// }
return 0;
}
/*
82 3 20 8-*2/+
100
中缀转换为后缀
*/
四、作业
作业1. 欢乐赛58任选3题完成
作业2. 后缀表达式练习题.pdf
这里空空如也



有帮助,赞一个