双链接列表通过递归搜索C

Double link list searching C++ through recursion

本文关键字:递归 搜索 链接 列表      更新时间:2023-10-16

我正在尝试通过递归实现搜索双链接列表,它只会给我一个第一个节点的输出,例如输入是1,2,3,而我正在尝试搜索1,那么它会找到我,但是如果试图搜索2,则说找不到。我认为

else
{
    return search(xtemp->next, num);
}

不起作用,它不前进。

int search(node *xtemp, int num)
{
    xtemp = head;
    if (xtemp->next == NULL)
        return 0;
    if (xtemp == NULL)
    {
        cout << "Empty" << endl;
        return 0;
    }
    if (xtemp->info == num)
    {
        cout << "Target found" << endl;
        return 0;
    }
    if (xtemp->info != num)
    {
        cout << "NOt found," << endl;
        return 0;
    }
    else
    {
        return search(xtemp->next, num);
    }
}

我认为您有名为Head ...查看您在功能的第一行中正在做什么

 xtemp = head;

因此,在递归调用中获得的内容无关紧要,您将XTEMP值替换为链接列表的负责人

您应该从main()调用 search(head),并且在函数中不要使用 xtemp=head

另外,请查看以下内容:

 if (xtemp->info == num)
    {
        cout << "Target found" << endl;
        return 0;
    }
    if (xtemp->info != num)
    {
        cout << "NOt found," << endl;
        return 0;
    }

您的递归呼叫将永远不会被调用您想接听递归电话吗?

尝试以下操作:

int search(node *xtemp, int num)
{
    if (xtemp == NULL)
    {
        cout << "Not Found" << endl;
        return 0;
    }
    if (xtemp->info == num)
    {
        cout << "Target found" << endl;
        return 0;
    }
    else
    {
        return search(xtemp->next, num);
    }
}