中缀表达式转后缀表达式c++

希望代码比较简单
有以下几种数据

img
这本来是scratch的题,但我觉得大家可能很少用,所以我就来求一下c++代码吧


#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string> 

using namespace std;
string s;

void print(int l, int r) {//区间[l, r) 
    if(l==r) return;
    if(s[l]=='('&&s[r-1]==')') {print(l+1, r-1); return;}
    int out=0, pos=-1;
    for(int i=r-1; i>=l; --i) {
        if(s[i]==')') ++out;
        if(s[i]=='(') --out;
        if((s[i]=='+'||s[i]=='-')&&out==0) {pos=i; break;}
    }
    if((pos==l&&s[pos+1]!='(')||pos==-1) {
        for(int i=l; i<r; ++i) printf("%c", s[i]);
        printf(" ");
        return;
    }
    print(l, pos); print(pos+1, r);
    printf("%c ", s[pos]);
    
}

int main() {
    getline(cin, s);
    print(0, s.size());
    return 0;
}


写入栈中,来进行输出