gpt4 book ai didi

C - 出现段错误(核心已转储)

转载 作者:行者123 更新时间:2023-11-30 14:34:50 27 4
gpt4 key购买 nike

我刚刚开始学习树并想实现它。此代码可以编译,但运行后出现段错误。

有2个函数

1."new"这将创建一个新节点以添加到树中

2.“插入”这会将数据插入到树中,这是一个递归函数

我只是想检查数据是否正在存储,因此我尝试打印根节点中的值,但随后出现段错误

我已经检查了所有似乎正确的内容,但不知道出了什么问题

struct node
{
int data;
struct node* left;
struct node* right;
};
struct node* new(int data)
{
struct node* newnode = (struct node*)malloc(sizeof(struct node*));
newnode->data=data;
newnode->left=newnode->right=NULL;
return newnode;
}
struct node* insert(struct node* root,int data)
{
if(root==NULL)
{
new(data);
}
else if (data<=root->data)
{
root->left =insert(root->left,data);
}
else
{
root->right=insert(root->right,data);
}
return root;
}


void main()
{
struct node* root = NULL;
root = insert(root,15);
root = insert(root,20);

printf("%d",root->data);
}

我预计输出为 15,但出现段错误。

最佳答案

您不会将数据存储在任何地方。将 insert 函数中的 new(data); 更改为 root = new(data);

另一个错误是 struct node* newnode = (struct node*)malloc(sizeof(struct node*)) 应该是 struct node* newnode = malloc(sizeof(*newnode) )。这既修复了一个错误,又因其他原因而变得更好。

此外,void main() 应该是 int main()

关于C - 出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58817405/

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