中缀转后缀 ,整个代码是我自己写的 没啥技术含量 一看就懂,那个地方没看懂(你就要反思一下自己怎么学的),哈哈哈,也可以评论,仅供参考不喜勿喷,欢迎大佬指点,点个赞作为鼓励呀,谢谢
#include<stdio.h>
#define max 20
int main()
{ //中缀: a+b*c+(d*e+f)*g
//后缀: abc*+de*f+g*+
char arr1[max] = { 'a','+','b','*','c','+','(','d','*','e','+','f',')','*','g' };
char arr2[max] = { 0 };
int j = 0;
int i = 0;
printf("后缀表达式为:");
while (arr1[j] != '\0')
{
if (arr1[j] >= 'a' && arr1[j] <= 'z')
{
printf("%c", arr1[j++]);
}
else
{
if (i == 0)
{
arr2[i++] = arr1[j++];
}
else
{
if (arr1[j] =='(')
{
arr2[i++] = arr1[j++];
}
else if (arr1[j] == '*'|| arr1[j] =='/')
{
arr2[i++] = arr1[j++];
}
else if (arr1[j] == '+' || arr1[j] == '-')
{
if (arr2[i - 1] == '*' || arr2[i - 1] == '/')
{
while(arr2[i - 1] !='('&&i!=0)
{
printf("%c", arr2[--i]);
}
}
arr2[i++] = arr1[j++];
}
else
{
while (arr2[i - 1] != '(')
{
printf("%c", arr2[--i]);
}
i--;
j++;
}
}
}
}
while (i != 0)
{
printf("%c", arr2[--i]);
}
printf("\n");
system("pause");
return 0;
}
运行结果: