関数が新しいリストの「ヘッド」を再帰的に返す方法を理解するのに苦労しています。それらはうまく追加されますが、再帰的に、いわば「自分の場所を保存する」方法がわかりません。
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);
}