c-用递归函数传递结构的指针



我只是想在递归函数中传递我的结构,但在函数中,当我再次传递它时,它将是我的结构的参数。我可以得到正确的值,但我得到了错误";从不兼容的指针类型[-Wincompatible指针类型]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;。使用您的Listsearch(x->root, xxx);的身份执行第一个启动搜索的呼叫。这样递归调用就正确了。

最新更新