中缀表达式转前缀表达式c++代码
2024-06-30 17:32:39
发布于:北京
#include<bits/stdc++.h>
using namespace std;
stack<char> st;
char ans[110],s[110];
int idx;
int f(char x){
if(x=='*'||x=='/')
return 2;
if(x=='+'||x=='-')
return 1;
}
int main(){
cin>>s;
for(int i=0;i<strlen(s);i++){
//数字
if(s[i]>='a'&&s[i]<='z'){
ans[idx++]=s[i];//数字直接存
}
//括号
else if(s[i]=='('){
st.push(s[i]);//入栈
}else if(s[i]==')'){
while(st.top()!='('){
ans[idx++]=st.top();//存入后缀表达式
st.pop();
}
st.pop();//弹出'('
}
//运算符
else{
while(!st.empty()&&f(st.top())>=f(s[i])){
if(st.top()=='(') break;
ans[idx++]=st.top();
st.pop();
}
st.push(s[i]);
}
}
while(!st.empty()){
ans[idx++]=st.top();
st.pop();
}
cout<<ans;
return 0;
}
全部评论 1
jiangchengzhi你没实力
2024-06-30 来自 北京
0
有帮助,赞一个