通过混合项递归复制两个链表

标签 c linked-list

我需要递归地复制两个链表并返回一个新的列表。我需要复制它们的方式是 list1 中的一个元素,list2 中的一个元素。如果一个列表比另一个短,则只需附加较长列表的剩余元素。

示例输入:list1 = [1,2,3], list2 = [4,5,6,7];结果 = [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;
    }           
}

有人可以指出我犯的错误吗?

编辑:现在可以了。我遗漏了两个返回语句。

最佳答案

您似乎缺少底部两个 else if 分支中的 return 语句。

关于通过混合项递归复制两个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041986/

相关文章:

c++ - 如何以编程方式清理 linux 中的页面缓存

c - Windows操作系统的C语言软件中断服务例程

c - 这段代码有什么问题?值不是加入到 t 了吗?

java - 如何使用java在文本文件中查找和分隔字符串值?

c - 生产者-消费者多线程段错误: core dump

c++ - 如何使用getc编写getLine函数

c++ - void * 指向结构体的指针

c - 排序中的错误输出 + 在数组中查找 bigges

java - ArrayList 和数组多排序

java - 仅检索LinkedList中的一项特定数据(数据字段保存多条数据)