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


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

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

单链式结构是这样的:

1 template <class value>
2 struct node {
3   value val;
4   node *next = nullptr;
5 };

定义并初始化list1:

1 typedef node<int> in;
2 in *list1 = new in;
3 // do something
4 // do something else

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

1 in *list2;

深拷贝的实现:

 1 template <class value>
 2 void sldc(node<value> **dst, const node<value> *src) { // single list deep copy
 3   while (*dst) { // clear
 4     auto **tmp = &(*dst)->next;
 5     delete tmp;
 6     dst = tmp;
 7   }
 8   *dst = nullptr;
 9 
10   for (; src; src = src->next, dst = &(*dst)->next) {
11     *dst = new in;
12     (*dst)->val = src->val;
13   }
14 }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM