我需要递归复制两个链表并返回一个新的list
. 我需要复制它们的方式是 list1 中的一个元素,list2 中的一个元素。如果一个列表比另一个列表短,只需附加较长列表的剩余元素。
示例输入:list1 = [1,2,3], list2 = [4,5,6,7]; result = [1,4,2,5,3,6,7];
这是我有缺陷的(现在是正确的)代码:
node *copy(node *list1, node *list2)
{
if (list1 == NULL && list2 == NULL) return NULL;
else if (list1 != NULL && list2 != NULL) {
node *result;
result = newnode();
result->data = list1->data;
result->next = newnode();
result->next->data = list2->data;
result->next->next = copy(list1->next, list2->next);
return result;
}
else if (list1 != NULL && list2 == NULL) {
node *result;
result = newnode();
result->data = list1->data;
result->next = copy(list1->next, NULL);
return result;
}
else if (list1 == NULL && list2 != NULL) {
node *result;
result = newnode();
result->data = list2->data;
result->next = copy(NULL, list2->next);
return result;
}
}
有人可以指出我正在犯的错误吗?
编辑:现在它可以工作了。我错过了两个退货声明。