C++ 中如何深拷贝链表以防止这种影响?
时间: 2024-09-15 08:12:09 浏览: 52
c++新手入门基础语法笔记
在 C++ 中,为了深度复制链表并防止修改原始链表影响到其他引用,你需要递归地复制每个节点及其所有嵌套的数据结构。以下是使用迭代或递归的方式创建深拷贝链表的一个示例:
**迭代方法(通过构造函数)**:
```cpp
template <typename T>
struct Node {
T value;
Node* next;
};
Node* deepCopyList(Node* original) {
if (!original)
return nullptr;
Node* copy = new Node{original->value};
copy->next = deepCopyList(original->next);
return copy;
}
```
**递归方法(同样使用构造函数)**:
```cpp
Node* deepCopyListRecursion(Node* original) {
if (!original)
return nullptr;
return new Node{original->value, deepCopyListRecursion(original->next)};
}
```
在这两个例子中,每次复制新节点都会分配新的内存空间,并链接到复制后的下一个节点,这样修改 `a` 不会影响 `b`。
阅读全文