繁体   English   中英

如何将链表复制到另一个列表?

[英]How do you copy a linked list into another list?

我正在研究数据结构和链表,但我没有得到如何制作链表副本的概念。 有人可以解释一下,可能使用伪代码或C代码吗?

复制链表的逻辑是递归的,并基于以下观察:

  1. 空列表的克隆是空列表。
  2. 具有第一节点x和剩余节点xs的列表的克隆是x的副本,其前缀为xs的克隆。

如果用C ++编码链表,这可能非常干净:

struct Node {
    int value;
    Node* next;
};

Node* Clone(Node* list) {
    if (list == NULL) return NULL;

    Node* result = new Node;
    result->value = list->value;
    result->next = Clone(list->next);
    return result;
}

您是否了解如何将新节点添加到现有列表? 您是否了解如何遍历(即迭代)列表? 复制列表只是同时执行这两个操作(遍历ListA;对于每个元素,复制元素并将其作为新节点添加到ListB)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM