2 rkakar rkakar 于 2016.04.19 20:10 提问

为什么只能插入一个结点就出错?完全按书上的思路敲的,帮忙看一下,谢谢了

#include
#include
#include
typedef struct tree {
int number;
struct tree * left;
struct tree * right;
}Tree;
Tree * TreeInsert(Tree * T,int n) {
if (T == NULL) {
T = (Tree *)malloc(sizeof(Tree));
if (T == NULL) {
printf("Out of space!");
return NULL;
}
else {
T->number = n;
T->left = T->right = NULL;
}
}
else if (T&&(n < T->number)) {
TreeInsert(T->left, n);
}
else if(T && (n > T->number)){
TreeInsert(T->right,n);
}
return T;
}
void main() {
int temp, n, i = 0;
printf("please input a number:");
scanf("%d", &n);
Tree * Ntree;
for (i = 0;i < n;i++) {
printf("Now please input a number:");
scanf("%d", &temp);
TreeInsert(Ntree, temp);
}

}

2个回答

wowxiaofs
wowxiaofs   2016.04.19 20:40

请在声明指针的时候 为他赋值 或者 置为null!!!!!!

rkakar
rkakar 谢谢
一年多之前 回复
rkakar
rkakar 谢谢
一年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.04.19 20:49

Tree * Ntree;改为Tree * Ntree = NULL;没有初始化之前Ntree指向了一个未知的区域
直接访问的话会造成异常崩溃

rkakar
rkakar 谢谢
一年多之前 回复
rkakar
rkakar 谢谢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!