Мне нужно скопировать два связанных списка рекурсивно и вернуть новый list
. Способ, которым мне нужно скопировать их, - это один элемент из списка1, один из списка2. Если один список короче другого, просто добавьте оставшиеся элементы более длинного списка.Скопируйте два связанных списка рекурсивно, смешав элементы
Пример ввода: 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;
}
}
Может кто-то момент ошибки, которые я делаю?
Редактировать: Теперь это работает. Мне не хватало двух возвратных заявлений.
Это должно быть рекурсивным? не может быть простой куклой, как за? –