gpt4 book ai didi

c - 我的树程序在插入一个根节点后崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:30 25 4
gpt4 key购买 nike

我不太擅长制作树,而且我完全搞砸了递归。但是,我试图制作一个程序来将数据插入和显示到树中。

问题是插入到根节点后就崩溃了,不知道是什么原因。这棵树不是太大。只需 10 个 int

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct node{
int data;
struct node * left;
struct node * right;
};


void insert(struct node * root,int num){
printf("Insert called for num:%d\n",num);
if(root == NULL){
root = (struct node *)malloc(sizeof(struct node));
root->data = num;
}else if(num > root->data){ // Number greater than root ?
insert(root->right,num); // Let the right sub-tree deal with it
}else if(num < root->data){// Number less than root ?
insert(root->left,num);// Let the left sub-tree deal with it.
}else{
// nothing, just return.
}
}


void display(struct node * root){ // Inorder traversal
if(root->left!=NULL){ // We still have children in left sub-tree ?
display(root->left); // Display them.
}

printf("%d",root->data); // Display the root data

if(root->right!=NULL){ // We still have children in right sub-tree ?
display(root->right); // Display them.
}

}

int main(int argc, char *argv[]) {
int a[10] = {2,1,3,5,4,6,7,9,8,10};
int i;
struct node * tree;

for(i = 0; i < 10;i++){
insert(tree,a[i]);
}
printf("Insert done");
return 0;
}

谁能告诉我哪里出错了?

我知道要求人们在 Stack 上审查您的代码是不受欢迎的,但有时 pair programming作品:p

更新:
设置struct node * tree = NULL;后,insert()方法运行良好。 display() 导致程序崩溃。

最佳答案

在你的

int main(int argc, char *argv[]) {
// ...
struct node * tree;
// what is the value of tree at this line?
for(i = 0; i < 10;i++){
insert(tree,a[i]);
}
// ...
}

标记线处的“树”指向什么?

关于c - 我的树程序在插入一个根节点后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com