前序中序队列转化正常,后序转化单独测试也正常,可是放到一起后序队列转化程序就没有输出了,c语言新手,求大佬帮忙。(╥ω╥)
#include <stdio.h>
int main()
{
int i,k,n,j=-1,d=0;
char a[150000];
int b[150000];
scanf("%[^\n]",a);
for(i=0;i<150000&&a[i]!='\0';i++)//字符串转化数字
{
if(a[i]>='0'&&a[i]<='9')
{j++;b[j]=a[i]-'0';}
}
for(i=0;i<=j;i++)//前序转化
{
if(b[i]!=0)
{
printf("%d ",b[i]);
}
}printf("\n");
for(i=0;i>=0&&i<=j;)//中序转化
{
if(b[i]==0)
{--i;
if(i>=0)
{
printf("%d ",b[i]);
for(k=i;b[k]<=j;k++)
{
b[k]=b[k+2];
}
}else break;
}
else i++;
}printf("\n");
for(i=0,n=j;i>=0&&n>0;)//后序转化
{
if(b[i]==0&&b[i+1]==0)
{
i--;n=j-2;
while(b[i]==0){i--;if(i<0)d=1;}
if(d==1)break;
printf("%d ",b[i]);
for(k=i;b[k]<=j;k++)
{
b[k]=b[k+2];
}
}else i++;
}printf("\n");
}
#include <stdio.h>
int main()
{
int i,k,n,j=-1,d=0;
char a[150000];
int b[150000];
scanf("%[^\n]",a);
for(i=0;i<150000&&a[i]!='\0';i++)//字符串转化数字
{
if(a[i]>='0'&&a[i]<='9')
{j++;b[j]=a[i]-'0';}
}
for(i=0;i<=j;i++)//前序转化
{
if(b[i]!=0)
{
printf("%d ",b[i]);
}
}printf("\n");
for(i=0;i>=0&&i<=j;)//中序转化
{
if(b[i]==0)
{--i;
if(i>=0)
{
printf("%d ",b[i]);
for(k=i;b[k]<=j;k++)
{
b[k]=b[k+2];
}
}else break;
}
else i++;
}printf("\n");
for(i=0,n=j;i>=0&&n>0;)//后序转化
{
if(b[i]==0&&b[i+1]==0)
{
i--;n=j-2;
while(b[i]==0){i--;if(i<0)d=1;}
if(d==1)break;
printf("%d ",b[i]);
for(k=i;b[k]<=j;k++)
{
b[k]=b[k+2];
}
}else i++;
}printf("\n");
}