gpt4 book ai didi

c - BST 插入不工作

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:29 24 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/19992219/

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