我制作了汽车链表。 我正在尝试进行递归函数搜索。 这就是我做的。 出于某种原因,这不起作用。请问您能解释一下为什么以及如何解决它?
CarroPtr Search(CarroPtr head,int num)
{
printf("Matricula %d\n", num);
if (head == NULL)
{
return NULL;
}
if (head->matricula == num)
{
return head->nome;
}
else
{
head = head->next;
}
Search(head, num);
}
答案 0 :(得分:2)
看来你的意思是以下
CarroPtr Search(CarroPtr head,int num)
{
return head == NULL || head->matricula == num ? head : Search( head->next, num );
}
或者如果您认为在这种情况下它会更具可读性(尽管不是必需的话),您可以将三元运算符的条件括在括号中。
CarroPtr Search(CarroPtr head,int num)
{
return ( head == NULL || head->matricula == num ) ? head : Search( head->next, num );
}
至于你的代码,那么函数会尝试返回不同类型的对象,如head
和head->nome
,或者返回任何内容,就像调用函数的语句一样
Search(head, num);
导致未定义的行为..