2 つのリンクされたリストを再帰的にコピーし、新しいlist
. それらをコピーする必要がある方法は、list1 からの 1 つの要素、list2 からの 1 つの要素です。1 つのリストが他のリストよりも短い場合は、長いリストの残りの要素を追加します。
入力例: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;
}
}
誰かが私が犯している間違いを指摘できますか?
編集:今では動作します。returnステートメントが2つありませんでした。