gpt4 book ai didi

c - 为什么这个搜索函数返回一个指向指针的指针呢?

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:46 25 4
gpt4 key购买 nike

#ifndef _BST_H_

/* Returns negative (left<right), zero (left==right), or positive (left>right). */
typedef int comparator(void* left, void* right);

struct bst_node {
void* data;
struct bst_node* left;
struct bst_node* right;
};

struct bst_node* new_node(void* data);
void free_node(struct bst_node* node);
struct bst_node** search(struct bst_node** root, comparator compare, void* data);
void insert(struct bst_node** root, comparator compare, void* data);
void delete(struct bst_node** node);

#endif

这是一个头文件。不懂search函数,为什么返回类型是node**

编辑:在此处添加搜索功能:

struct bst_node** search(struct bst_node** root, comparator compare, void* data) {
struct bst_node** node = root;
while (*node != NULL) {
int compare_result = compare(data, (*node)->data);
if (compare_result < 0)
node = &(*node)->left;
else if (compare_result > 0)
node = &(*node)->right;
else
break;
}
return node;
}

最佳答案

我猜测该函数返回一个指向指针的指针,以便您的search 函数可用于实现insert。如果 search 只是返回一个指向节点的指针,但没有找到该节点,那么您必须再次遍历树以找出需要重新连接哪个指针以进行插入。如果它反而返回一个指向最终为空的节点指针的指针,那么 insert 可以通过重新分配这个指针以指向需要插入的新节点来实现。

只是一个猜测。

关于c - 为什么这个搜索函数返回一个指向指针的指针呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373905/

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