#include<cstdio>
#include<cstring>
char data[100005]={0};
struct stack
{
char datac[100005];
int p;
stack(){memset(datac,0,sizeof(datac));p=0;}
void push(char a){datac[p++]=a;}
void pop(){datac[--p]=0;}
char top(){return datac[p-1];}
}s;
int main()
{
gets(data);
int i;
for(i=0;data[i];i++)
{
if(data[i]>='0'&&data[i]<='9')
{
while(data[i]>='0'&&data[i]<='9')
{
printf("%c",data[i]);
i++;
}
printf(" ");
i--;
}
else if(data[i]==' ');
else if(data[i]==')')
{
while(s.top()!='(')
{
printf("%c ",s.top());
s.pop();
}
s.pop();
}
else if(data[i]=='+'||data[i]=='-')
{
while(s.p)
{
if(s.top()=='*'||s.top()=='/'||s.top()=='%'||s.top()=='+'||s.top()=='-')
{
printf("%c ",s.top());
s.pop();
}
else break;
}
s.push(data[i]);
}
else if(data[i]=='*'||data[i]=='/'||data[i]=='%')
{
while(s.p)
{
if(s.top()=='*'||s.top()=='/'||s.top()=='%')
{
printf("%c ",s.top());
s.pop();
}
else break;
}
s.push(data[i]);
}
else s.push(data[i]);
}
while(s.p)
{
printf("%c ",s.top());
s.pop();
}
printf("\n");
return 0;
}
数据结构-中缀换后缀
最新推荐文章于 2021-12-13 08:00:00 发布