您好,我是初学者,正在学习 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/