[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