[C++][数据结构][算法]单链式结构的深拷贝

深拷贝(deep-copy),区别于浅拷贝,表示复制所有数据,而不是像浅拷贝一般只复制指针。深拷贝的数据不会因原始数据被delete后而消失。

单链式结构可以实现单链表,栈,队列,树等数据结构。掌握了单链式结构的深拷贝,实现其它数据结构的深拷贝就易如反掌了。

单链式结构是这样的:

 template <class value>
struct node {
value val;
node *next = nullptr;
};

定义并初始化list1:

 typedef node<int> in;
in *list1 = new in;
// do something
// do something else

然后我们又定义了一个单链表list2:

 in *list2;

深拷贝的实现:

 template <class value>
void sldc(node<value> **dst, const node<value> *src) { // single list deep copy
while (*dst) { // clear
auto **tmp = &(*dst)->next;
delete tmp;
dst = tmp;
}
*dst = nullptr; for (; src; src = src->next, dst = &(*dst)->next) {
*dst = new in;
(*dst)->val = src->val;
}
}
上一篇:codeforces problem 140E New Year Garland


下一篇:TreeMap——实现comparable接口并重写CompareTo方法