#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct no
{
char *data;
int base;
int top;
}node;
char ch[105];
void csh(node &s)
{
s.data=(char *)malloc(105*sizeof(char));
s.base=0;
s.top=0;
}
int jian(char a)
{
if(a=='+'||a=='-')
return 1;
if(a=='*'||a=='/')
return 2;
if(a=='(')
return 3;
if(a==')')
return 4;
return 0;
}
void push(node &s,char a)
{
if(s.top==0)
{
s.top++;
s.data[s.top]=a;
}
else
{
if(jian(a)>=jian(s.data[s.top]))
{
if(jian(a)==4)
{
while(s.data[s.top]!='(')
{
printf("%c",s.data[s.top--]);
}
s.top--;
}
else
{
s.top++;
s.data[s.top]=a;
}
}
else
{
if(s.data[s.top]!='(')
{
printf("%c",s.data[s.top]);
s.data[s.top]=a;
}
else
{
s.top++;
s.data[s.top]=a;
}
}
}
}
int main()
{
node zi;
int i;
csh(zi);
scanf("%s",ch);
for(i=0;ch[i]!='#';i++)
{
if(ch[i]>='a'&&ch[i]<='z')
{
printf("%c",ch[i]);
}
else
{
push(zi,ch[i]);
}
}
while(zi.top!=0)
{
printf("%c",zi.data[zi.top--]);
}
printf("\n");
}
#include<string.h>
#include<stdlib.h>
typedef struct no
{
char *data;
int base;
int top;
}node;
char ch[105];
void csh(node &s)
{
s.data=(char *)malloc(105*sizeof(char));
s.base=0;
s.top=0;
}
int jian(char a)
{
if(a=='+'||a=='-')
return 1;
if(a=='*'||a=='/')
return 2;
if(a=='(')
return 3;
if(a==')')
return 4;
return 0;
}
void push(node &s,char a)
{
if(s.top==0)
{
s.top++;
s.data[s.top]=a;
}
else
{
if(jian(a)>=jian(s.data[s.top]))
{
if(jian(a)==4)
{
while(s.data[s.top]!='(')
{
printf("%c",s.data[s.top--]);
}
s.top--;
}
else
{
s.top++;
s.data[s.top]=a;
}
}
else
{
if(s.data[s.top]!='(')
{
printf("%c",s.data[s.top]);
s.data[s.top]=a;
}
else
{
s.top++;
s.data[s.top]=a;
}
}
}
}
int main()
{
node zi;
int i;
csh(zi);
scanf("%s",ch);
for(i=0;ch[i]!='#';i++)
{
if(ch[i]>='a'&&ch[i]<='z')
{
printf("%c",ch[i]);
}
else
{
push(zi,ch[i]);
}
}
while(zi.top!=0)
{
printf("%c",zi.data[zi.top--]);
}
printf("\n");
}