我试图实现二叉搜索树的代码。问题是以下代码不起作用,但如果我传递双指针来插入函数(如 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;
}
在你的例子中也是同样的事情。您必须传递指针的地址才能更改其值(指针的值是实际数据的地址)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)