C++ 使用递归函数创建链表

标签 c++ recursion linked-list

您好,我是初学者,正在学习 C++ 我正在尝试使用递归函数创建一个链表 我虽然得到了或多或少的指针、链表、数据结构等,但我卡住了 2 天。

这是我的全部代码。

我基本上想做的就像我说的只使用递归函数创建一个链表。 问题是我的指针变量“head”总是指向 NULL,我不知道为什么,我想我误解了很多东西,但我根本不知道是什么……而且我尝试了更多,我得到了困惑。

这一定是个新手问题,但如果有人能帮助我,我将不胜感激。

#include <iostream>

using namespace std;

struct linkedlist
{
    int value;
    linkedlist *next;
};

void insertNode(linkedlist* temp)
{
    if (temp->next != NULL)
    {
        insertNode(temp->next);
    }
    else
    {
        temp->next = new linkedlist;
        temp->next->value = 0;
        temp->next->next = NULL;
    }

}


linkedlist *addNode(linkedlist *temp)
{ 
    if (temp == NULL)
    {
        linkedlist *newelement = new linkedlist;
        newelement->value = 0;
        newelement->next = NULL;
        temp = newelement;

        return newelement;
    }
    else
    {
        insertNode(temp);
    }
}

void displaylist(linkedlist *temp)
{
    while (temp != NULL)
    {
        cout << temp->value << endl;
        temp = temp->next;
    }
}

int main()
{
    linkedlist *head = NULL;

    linkedlist *element1 = addNode(head);
    linkedlist *element2 = addNode(head);
    linkedlist *element3 = addNode(head);
    linkedlist *element4 = addNode(head);
    linkedlist *element5 = addNode(head);

    cin.ignore();
    cin.get();
}

最佳答案

您正在尝试修改传递给 addNode 的指针,但该指针是按值传递的,因此您不会在调用站点看到修改。

要解决此问题,请通过引用获取指针:

linkedlist *addNode(linkedlist*& temp)

关于C++ 使用递归函数创建链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155546/

相关文章:

c++ - 如何在 C++ vector 中的奇数元素前添加值 -1,我在使用插入函数时遇到问题

c++ - C++中的非成员函数与静态函数

haskell - 为什么代数类型只是初始代数(反之亦然)?

c# - 将递归替换为 TimerCallback 以迭代所有变体

c++ - 无法识别 NSIS 插件功能

需要MySQL递归查询/语句

c - C 中的链表 - 插入名称会使程序崩溃

c - (结构体名称*)b->c 是什么意思?

c++ - 检查数据是否已经在列表中

c++ - 如何在 MFC 中重定向 TRACE 语句以减少来自 AfxDumpStack() 的数据流?