C 中链表的递归搜索函数

Recursive Search Function for a Linked List in C

我制作了一个汽车链表。 我正在尝试进行递归函数搜索。 这是我所做的。 由于某种原因,这不起作用。请您解释一下为什么以及如何解决它?

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);

}

看来你的意思如下

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 );
}

至于您的代码,那么该函数要么尝试 return 不同类型的对象,例如 headhead->nome,要么 return 什么都没有,就像带有函数调用的语句

Search(head, num);

这会导致未定义的行为..