使用递归函数传递结构指针

Pass pointer of struct with recursive function

我只是想在递归函数中传递我的结构,但在函数中,当我再次传递它时,它将成为我的结构的参数。 我可以获得正确的值,但我收到错误“从不兼容的指针类型 [-Wincompatible-pointer-types]gcc 传递 'search' 的参数 1 “

typedef struct node_t
{
int keyVal;
struct node_t *leftNode;
struct node_t *rightNode;
struct node_t *parent;
}Node;

typedef struct tree_t
{
 struct node_t *root;
}List;



Node *search( List *temp, int value)
    {  
        Node *curr=temp->root;
       if (curr == NULL || curr->keyVal == value)
           return curr;
        if (curr->keyVal < value)


      return search(&(curr->leftNode), value); //here I'm getting a warning
                     ^^^ 
    return search(&(curr->leftNode), value); //the same here 
}                ^^^ 

Node *search( List *temp, int value) 这需要一个 List 又名 tree_t 作为第一个参数。

return search(&(curr->leftNode), value); 中,curr->leftNodeNode 又名 node_t。这是不同的类型,编译器抱怨不兼容的指针类型是正确的。

可能的解决方法是将函数签名更改为 Node * search( Node * curr, int value) 并删除 Node *curr=temp->root;。使用 List 作为 search(x->root, xxx); 发起搜索的第一个调用。递归调用将是正确的。