考研数据结构栈:中缀表达式转换成后缀表达式c++实现
作者:
smile_922
,
2024-03-04 12:55:54
,
所有人可见
,
阅读 32
#include <bits/stdc++.h>
using namespace std;
unordered_map<char,int>mp={{'+',1},{'-',1},{'*',2},{'/',2}};
char st[10010];
int tt;
int main(){
string s;cin>>s;
for(int i=0;i<s.size();i++){
char c = s[i];
if(isdigit(c)){
int t = 0;
while(isdigit(s[i])){
t = t*10+s[i]-'0';
i++;
}
cout<<t<<' ';
i--;//停到数字的最后一位
}else if(c=='(')st[++tt]=c;//遇到(直接放到栈里面
else if(c==')'){while(st[tt]!='(')cout<<st[tt--]<<' ';//遇到)一直计算到(
tt--;//(出栈
}else{//运算符
while(tt&&mp[c]<=mp[st[tt]])cout<<st[tt--];
st[++tt]=c;
}
}
while(tt)cout<<st[tt--]<<' ';
return 0;
}