#include <iostream>
#include<string>
#include<cstring>
using namespace std;
int panduan(char a)
{
if(char a='(') return 6;
if(char a=')') return 5;
if(char a='*') return 4;
if(char a='+') return 3;
if(char a='-') return 2;
if(char a='/') return 1;
if(char a='#') return 0;
}
int main()
{
string str1;
cin>>str1;
int a,kuohaomar1,p,q;
int s1mark=-1;
int optrhead=0;
int length_str=str1.length();
char fuhao[length_str];
char s1[length_str];
str1.copy(fuhao,length_str,0);
char optr[length_str];
for(a=0;a<length_str;a++)
optr[a]='#';
for(a=0;a<length_str;a++)
{
if(fuhao[a]>='0'&&fuhao[a]<='9')
{
s1mark=+1;
s1[s1mark]=fuhao[a];
break;
}
else{
if(panduan(fuhao[a])>panduan(optr[optrhead]))
{
optrhead=+1;
optr[optrhead]=fuhao[a];
break;
}
if(panduan(fuhao[a]<panduan(optr[optrhead])))
{
s1mark=+1;
s1[s1mark]=optr[optrhead];
optr[optrhead]=fuhao[a];
break;
}
if(fuhao[a]='(')
{
kuohaomar1=optrhead;
optrhead=+1;
optr[optrhead]=fuhao[a];
break;
}
if(fuhao[a]=')')
{
for(p=kuohaomar1+1;p<a;p++)
{
s1mark=+1;
s1[s1mark]=optr[p];
}
for(p=kuohaomar1;p<=a;p++)
{
optr[p]='0';
}
optrhead=optrhead-kuohaomar1;
break;
}
}
}
for(q=optrhead;q>=1;q--)
{
s1mark=+1;
s1[s1mark]=optr[q];
}
for(a=0;a<length_st r;a++)
cout<<s1[a]<<" ";
}
求逆波兰式,不知道问题出在哪,大牛们,秋梨膏!
最新推荐文章于 2023-06-23 10:58:52 发布