主题:[讨论]为什么建不了树呢?大家帮小弟看看
#include<stdio.h>
#include<malloc.h>
#define datatype char
typedef struct node
{datatype data;
struct node *lchild,*rchild;
}JD;
JD *crt_bt_pre(JD *bt)
{char ch;
printf("ch=");
scanf("%c",&ch);
if(ch==' ') bt=NULL;
else
{bt=(JD*)malloc(sizeof(JD));
bt->data=ch;
bt->lchild=crt_bt_pre(bt->lchild);
bt->rchild=crt_bt_pre(bt->rchild);
}
return(bt);
}
void preorder(JD *bt)
{if(bt!=NULL)
{printf("%c",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void main()
{JD *bt;
bt=crt_bt_pre(bt);
preorder(bt);}
正好学树了,但写上上面的树后,为了验证树建成功了没,又先序遍历了一次。
但建不了啊,一运行,老是弹出ch= ch= ch=,还有怎么控制结束输入树的结点啊,我只建有限个结点的树啊。
#include<malloc.h>
#define datatype char
typedef struct node
{datatype data;
struct node *lchild,*rchild;
}JD;
JD *crt_bt_pre(JD *bt)
{char ch;
printf("ch=");
scanf("%c",&ch);
if(ch==' ') bt=NULL;
else
{bt=(JD*)malloc(sizeof(JD));
bt->data=ch;
bt->lchild=crt_bt_pre(bt->lchild);
bt->rchild=crt_bt_pre(bt->rchild);
}
return(bt);
}
void preorder(JD *bt)
{if(bt!=NULL)
{printf("%c",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void main()
{JD *bt;
bt=crt_bt_pre(bt);
preorder(bt);}
正好学树了,但写上上面的树后,为了验证树建成功了没,又先序遍历了一次。
但建不了啊,一运行,老是弹出ch= ch= ch=,还有怎么控制结束输入树的结点啊,我只建有限个结点的树啊。