我需要遞歸複製兩個鏈接列表並返回新的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;
}
}
有人能指出我正在做的錯誤?
編輯:現在它的工作。我錯過了兩個返回語句。
它必須是遞歸的嗎?不能是一個簡單的叔叔,像一個for? –