使用递归函数传递结构指针
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->leftNode
是 Node
又名 node_t
。这是不同的类型,编译器抱怨不兼容的指针类型是正确的。
可能的解决方法是将函数签名更改为 Node * search( Node * curr, int value)
并删除 Node *curr=temp->root;
。使用 List
作为 search(x->root, xxx);
发起搜索的第一个调用。递归调用将是正确的。
我只是想在递归函数中传递我的结构,但在函数中,当我再次传递它时,它将成为我的结构的参数。 我可以获得正确的值,但我收到错误“从不兼容的指针类型 [-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->leftNode
是 Node
又名 node_t
。这是不同的类型,编译器抱怨不兼容的指针类型是正确的。
可能的解决方法是将函数签名更改为 Node * search( Node * curr, int value)
并删除 Node *curr=temp->root;
。使用 List
作为 search(x->root, xxx);
发起搜索的第一个调用。递归调用将是正确的。