文章

81

粉丝

2

获赞

493

访问

9.5k

头像
中缀表达式转后缀表达式 题解:
P5386 贵州大学2025年机试题
发布于2026年3月12日 17:17
阅读数 168

#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();
    }
}

将中缀表达式转换为后缀表达式可以用栈实现。顺序扫描表达式中的每个字符:如果是数字,直接输出;如果是左括号 (,入栈;如果是右括号 ),不断弹出栈顶运算符并输出,直到遇到左括号为止,然后将左括号弹出但...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发