#include<stdio.h>
#include<string.h>
//函数判断符号优先级
int compare(char a)
{
if (a == '+' || a =='-')
return 1;
else if (a == '*' || a =='/')
return 2;
else if (a == '(' || a == ')')
return 0;
else
return -1;
}
int main()
{
char s1[100];
char s2[100];
char str[100];
int t1 = -1,t2 = -1,flag1 = 0;
printf("输入中缀表达式:\n");
scanf("%s",str);
int i,len = strlen(str);
for(i=0;i<len;)
{
if(compare(str[i]) == -1) //是数时
s1[t1++] = str[i++];
else if(str[i] == '(')
s2[t2++] = str[i++];
else if(str[i] == ')')
{
while(compare(s2[t2]) != 0)
s1[t1++] = s2[t2--];
t2--;
i++;
}
else
{
if(t2 == -1 || compare(s2[t2])<compare(str[i]))
s2[t2++] = str[i++];
else
s1[t1++] = s2[t2--];
}
}
for(i=0;i<t1+1;i++)
{
printf("%c",s1[i]);
}
return 0;
}