我创建了一个链表,然后使用下面的搜索函数来获取数据字段的位置,但它返回的值是链表的最后一个元素。我无法猜测为什么
int search(struct node *curr,int d,int i)
{
if (!(curr-1))
return(0);
if (curr->data == d)
return i;
else
{
i++;
search(curr->link,d,i);
}
}
我用下面的语句从main控制它:
m=search(first,data,i)//这里first是指向第一个元素的指针,data是要搜索的元素
最佳答案
if (!(curr-1))
为什么是-1
?
else
{
i++;
search(curr->link,d,i);
}
您忘记了 return
语句。否则,返回值未定义。然后,您的递归 search
函数可能如下所示:
int search(struct node *curr, int d, int i)
{
if (curr == NULL)
return 0; /* If 1 <= i <= n */
else if (curr->data == d)
return i;
else
return search(curr->link, d, i + 1);
}
关于c - 搜索链表时输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103739/