gpt4 book ai didi

c - 需要更好的解释为什么我们在二分搜索中使用指向指针的指针

转载 作者:行者123 更新时间:2023-11-30 18:05:21 26 4
gpt4 key购买 nike

我只是想更好地理解指向指针的指针,在互联网上我发现了一个二分搜索的示例,其中开发人员在插入函数中使用了指向指针的指针。

我的问题是:

  1. 下面的代码与其他使用单指针的 BST 代码相比有什么优势?
  2. 在插入函数的末尾,代码使用了递归方法,但我不明白在 insert(&(*tree)->right, item 中使用 & 的语法);.

insert 函数如下所示:

 void insert(node ** tree, node * item)  
{
if(!(*tree))
{
*tree = item;
return;
}
if(item->val<(*tree)->val)
insert(&(*tree)->left, item);
else if(item->val>(*tree)->val)
insert(&(*tree)->right, item);
}

最佳答案

因为这一行,如果 item 为 null,则将它分配给 item,即它启动一个新树。

*tree = item;

如果您只使用一个node*,那么您将无法为其分配从函数外部可见的新值。这是因为指针是通过传递的,因此insert函数只是修改原始值的副本。

2) at the end of insert function the code uses recursive method but I didnt understadn teh syntax of using "&" insert(&(*tree)->right, item);

-> 运算符的优先级高于 & 运算符,因此它传入 *tree->right 的地址>,即下一个节点。

关于c - 需要更好的解释为什么我们在二分搜索中使用指向指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6569760/

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