中缀转后缀求助
  • 板块学术版
  • 楼主Tangent233
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/1/3 16:58
  • 上次更新2023/11/5 05:11:16
查看原帖
中缀转后缀求助
264548
Tangent233楼主2021/1/3 16:58
#include<bits/stdc++.h>
using namespace std;
string zz;
char hz[110];
int p1=1;
void zz_to_hz()
{
    stack < char > op;
    for(int i=0;i<zz.length();i++)
    {
        if(zz[i]>='0'&&zz[i]<='9')
        {
            cout<<"k0";
            hz[p1]=zz[i];
            //cout<<hz[p1]<<endl;
            p1++;
        }
        else
        {
            if(zz[i]=='+')
            {
                cout<<"k1";
                if(op.empty()) op.push(zz[i]);
                else
                {
                    while(op.top()!='('||op.empty())
                    {
                        hz[p1]=op.top();
                        p1++;
                        op.pop();
                    }
                    op.push(zz[i]);
                }
            }
            if(zz[i]=='-')
            {
                cout<<"k2";
                if(op.empty()) op.push(zz[i]);
                else
                {
                    while(op.top()!='(')
                    {
                        hz[p1]=op.top();
                        p1++;
                        op.pop();
                    }
                    op.push(zz[i]);
                }
            }
            if(zz[i]=='*')
            {
                cout<<"k3";
                if(op.empty()) op.push(zz[i]);
                else
                {
                    cout<<(op.top()!='+');
                    while(!(op.top()!='('||op.top()!='+'||op.top()!='-')||op.empty())
                    {
                        hz[p1]=op.top();
                        p1++;
                        op.pop();
                    }
                    op.push(zz[i]);
                }
            }
            if(zz[i]=='/')
            {
                cout<<"k4";
                if(op.empty()) op.push(zz[i]);
                else
                {
                    while(!(op.top()!='('||op.top()!='+'||op.top()!='-')||op.empty())
                    {
                        hz[p1]=op.top();
                        p1++;
                        op.pop();
                    }
                    op.push(zz[i]);
                }
            }
            if(zz[i]=='(')
                    cout<<"k5",
                    op.push(zz[i]);
            if(zz[i]==')')
            {
                cout<<"k6";
                while(op.empty())
                {
                        hz[p1]=op.top();
                        p1++;
                        if(op.top()=='(')
                        {
                            op.pop();
                            break;
                        }
                        else op.pop();
                }
            }
        }
        cout<<' ';
        for(int i=1;i<=p1;i++) cout<<hz[i];
        cout<<endl;
    }
}
int main()
{
    cin>>zz;
    zz_to_hz();
    for(int i=1;i<=p1;i++) cout<<hz[i];
    return 0;
}

2021/1/3 16:58
加载中...