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;
}
答案 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));
你确定那是你想要的吗? 您也可以将搜索从代码中删除!