问题描述
- 为什么只能插入一个结点就出错?完全按书上的思路敲的,帮忙看一下,谢谢了
-
#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);
}}
解决方案
请在声明指针的时候 为他赋值 或者 置为null!!!!!!
解决方案二:
Tree * Ntree;改为Tree * Ntree = NULL;没有初始化之前Ntree指向了一个未知的区域
直接访问的话会造成异常崩溃
时间: 2024-10-30 10:25:00