请问各位高手,我的程序出了什么问题?
#include "stdio.h"#include "stdlib.h"
//----树的二叉树(孩子-兄弟)存储表示------
typedef struct CSNode
{
char data;
struct CSNode *firstchild, *nextsibling;
}CSNode, *CSTree;
int bi_forest(CSTree *p)
{
char ch;
scanf("%c",&ch);
if (ch == '#')
{
(*p) = NULL;
} //如果二叉树是空的,则将相应的森林也设为空
else
{
if (!(( * p) = (CSNode * ) malloc (100 * sizeof(CSTree))))
{
exit(0);
}
(*p)->data = ch;
bi_forest(&(*p)->firstchild);
bi_forest(&(*p)->nextsibling);
}
return 0;
}
//求孩子兄弟链表表示的树T的深度
int GetDepth_CSTree(CSTree T, int maxd, int d)
{
CSTree p;
// printf("%d\n",maxd);
if (T = NULL)
{
// printf("%d\n",maxd);
return 1;
} //空树
else
{
if (!(p = (CSNode * ) malloc (100 * sizeof(CSTree))))
{
exit(0);
}
for (p = T->firstchild; p; p = p->nextsibling)
{
if ((d += GetDepth_CSTree(p, maxd, d)) > maxd)
{
maxd += d;
}
return maxd + 1; //子树的最大深度
}
}
return 0;
}
int main()
{
freopen("1.txt","r",stdin);
CSTree T;
int maxd = 0;
int d = 0;
int count = 0;
bi_forest(&T);
count += GetDepth_CSTree(T, maxd, d);
printf("%d\n",count);
return 0;
}