-2
void add_bst(struct node **tloc, int k, int v)
{
    struct node *nd;
    nd = search_bst(*tloc, k);
    nd = malloc(sizeof(struct node));
    nd->key=k;
    nd->value=v;
    nd->left=NULL;
    nd->right=NULL;
}

我很确定 search_bst 是正确编写的,但这个函数似乎是一个空操作。我究竟做错了什么?抱歉,如果这是非常明显的事情,但我是 C 新手。

编辑:这里是 search_bst:

struct node *search_bst(struct node *t, int k)
{
    while (t != NULL){
            if (t->key < k) t = t->right;
            else if (t->key > k) t = t->left;
            else return t;
    }
    return t;
}
4

2 回答 2

1

你搜索

    nd = search_bst(*tloc, k);

然后他们立即丢弃搜索结果

    nd = malloc(sizeof(struct node));

你确定那是你想要的吗?
您也可以将搜索排除在您的代码之外!

于 2013-02-20T14:34:21.180 回答
1

您在这里得到了 search_bst 的结果:

nd = search_bst(*tloc, k);

然后在这里您再次分配给 nd ,这意味着它不再指向先前的结果:

nd = malloc(sizeof(struct node));

因此,您将丢弃 search_bst 的结果。

于 2013-02-20T14:31:43.443 回答