gpt4 book ai didi

c - BST 插入不起作用

转载 作者:行者123 更新时间:2023-11-30 17:05:44 25 4
gpt4 key购买 nike

我试图实现二叉搜索树的代码。问题是以下代码不起作用,但如果我传递双指针来插入函数(如 insert(struct bst** node, data)),它就会起作用。我认为它也应该适用于传递单个指针。谁能解释一下这里的错误是什么?

void insert(struct bst* node, int data )
{
if (node == NULL)
{
printf("here with %d\n",data);
node = (struct bst*)malloc(sizeof(struct bst));
node->data = data;
node->left = NULL;
node->right = NULL;
}
if(data < node->data)
{
insert(node->left,data);
}
else if(data > node->data)
{
insert(node->right,data);
}
}

最佳答案

如果要更改传递给函数的指针的值,则应将其作为指向指针的指针传递。

void alloc_int(int** p)
{
*p = malloc(sizeof(int));
}

int main()
{
int* p = NULL;
alloc_int(&p);
*p = 10; // here memory for p is allocated so you can use it
free(p);
return 0;
}

在你的例子中也是同样的事情。你必须传递一个指针的地址来改变它的值(指针的值是实际数据的地址)。

关于c - BST 插入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35122927/

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