【发布时间】:2015-07-01 07:51:37
【问题描述】:
您好,我是学习 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();
}
【问题讨论】:
-
你得到什么错误?
-
请记住,递归会对您的列表造成严格的大小限制。如果列表中有太多元素,您将收到 StackOverflowException。考虑避免递归。
标签: c++ recursion linked-list