为什么BST代码没有工作(C)

时间:2013-02-20 14:29:42

标签: c pointers

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;
}

2 个答案:

答案 0 :(得分:1)

您将从search_bst获取结果:

nd = search_bst(*tloc, k);

然后在这里再次分配给nd,这意味着它不再指向上一个结果:

nd = malloc(sizeof(struct node));

所以你丢掉了search_bst的结果。

答案 1 :(得分:1)

您搜索

    nd = search_bst(*tloc, k);

然后他们立即扔掉搜索结果

    nd = malloc(sizeof(struct node));

你确定那是你想要的吗? 您也可以将搜索从代码中删除!