c - 搜索链表时输出错误

标签 c linked-list

我创建了一个链表,然后使用下面的搜索函数来获取数据字段的位置,但它返回的值是链表的最后一个元素。我无法猜测为什么

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/

相关文章:

C - 如何将以空格分隔的数字文本文件列表读入列表

java - 在 Queue<byte[]> 中录制语音并将其发送到服务器

c - 如何组合 fputs 而不引发错误

函数声明中的 const

c - 如何在 TWAIN 中最大化扫描区域?

c - 在哪里可以找到丢失的 "C"包含文件。 (*。H)

C++链表不删除头节点

c - 如何编写单个makefile,c文件在src中,h文件在inc文件夹中?

java - 复制链表...不使用克隆

rust - 链表堆栈溢出