文章
81
粉丝
2
获赞
493
访问
9.5k
#include <iostream>
#include <stack>
using namespace std;
int pri(char c){
if(c=='+'||c=='-') return 1;
if(c=='*'||c=='/') return 2;
return 0;
}
int main(){
string s;
cin>>s;
stack<char> st;
for(char c:s){
if(isdigit(c))
cout<<c<<' ';
else if(c=='(')
st.push(c);
else if(c==')'){
while(st.top()!='('){
cout<<st.top()<<' ';
st.pop();
}
st.pop();
}
else{
while(!st.empty() && pri(st.top())>=pri(c)){
cout<<st.top()<<' ';
st.pop();
}
st.push(c);
}
}
while(!st.empty()){
cout<<st.top()<<' ';
st.pop();
}
}
将中缀表达式转换为后缀表达式可以用栈实现。顺序扫描表达式中的每个字符:如果是数字,直接输出;如果是左括号 (,入栈;如果是右括号 ),不断弹出栈顶运算符并输出,直到遇到左括号为止,然后将左括号弹出但...
登录后发布评论
暂无评论,来抢沙发