一尘不染

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

algorithm

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


阅读 312

收藏
2020-07-28

共1个答案

一尘不染

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

  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;
}
2020-07-28