【发布时间】:2013-01-29 03:34:33
【问题描述】:
我无法弄清楚如何让函数递归地返回新列表的“头”。它们附加得很好,但递归地我无法弄清楚如何“保存我的位置”。
struct node {
int value;
node *next;
};
node* append(node *&L1, node *L2)
{
if(L1->next == NULL) {
L1->next = L2;
return L1;
}
else if(L2 == NULL)
return L1;
else
return append(L1->next, L2);
}
void main()
{
node *a, *b, *c, *d;
a=new node;
b=new node;
c=new node;
d=new node;
a->value = 4;
a->next = b;
b->next = NULL;
b->value = 7;
c->next = d;
c->value = 12;
d->next = NULL;
d->value = 8;
append(a,c);
}
【问题讨论】:
-
我很好奇,你为什么要写这样的链表?
-
你的任务是写一个链表实现,否则你应该使用带有c++的STL stl::list
-
我认为你的代码 sn-p 作为链接列表的原型可以工作,那么你要求什么?
-
也许我应该换个说法,我需要它返回一个指向新列表第一个节点的指针。例如,当我返回 L1->value 时,节点的值不是我分配的值。我省略了声明链接列表的位置,因为那是无关紧要的。我可以加进去。
-
马上,在取消引用检查
L1->next之前检查 NULLL1。这是第一个直接的错误。
标签: c++ pointers recursion linked-list