下面是代码,哪里出的问题。用的dev c++输入完字符直接奔溃,好像是pbi->的内存都不能访问,也遍历不了。为什么会这样?
自己瞎学了两三个月编程,实在没人可问。建立函数改成返回pbi也不行。函数哪里的空间被释放了?
# include <stdio.h>
# include <malloc.h>
//创建二叉树,先序:ABC##DE#G##F###
typedef struct BiNode
{
char data;
struct BiNode * lchild;
struct BiNode * rchild;
}BINODE, * PBINODE;
void initbinode(PBINODE);//建立二叉树
void traverse_bi(PBINODE);//遍历二叉树
int main()
{
PBINODE pbi = NULL;
printf("先序输入二叉树结点数据:\n");
initbinode(pbi);
printf("%c\n",pbi->data);//这里访问不了pbi->data!
traverse_bi(pbi);
return 0;
}
void initbinode(PBINODE pbi)//先序建立二叉树 “ABC##DE#G##F###”
{
char ch;
scanf("%c",ch);
if ('#' == ch)
{
pbi = NULL;
}
else
{
pbi = (PBINODE)malloc(sizeof(BINODE));
pbi->data = ch;
pbi->lchild = NULL;
pbi->rchild = NULL;
printf("%c\n",pbi->data);
initbinode(pbi->lchild);
initbinode(pbi->rchild);
}
}
void traverse_bi(PBINODE pbi)
{
if(NULL != pbi)
{
printf("%c\n",pbi->data);
if (pbi->lchild != NULL)
{
traverse_bi(pbi->lchild);
}
if (pbi->rchild != NULL)
{
traverse_bi(pbi->rchild);
}
}
}