码迷,mamicode.com
首页 > 其他好文 > 详细

【剑指offer】复杂链表的复制

时间:2020-03-03 22:22:19      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:span   http   复杂链表的复制   pid   结果   题解   png   get   lan   

题目链接:复杂链表的复制

 

题意:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。

 

题解:啊这个题我没看懂其实。我看了剑指的题解。大概就是要分三步

1、复制指针的label和next。将复制的节点跟在原节点后面。然后创造新的链表。

2、设置复制出来的新链表的random。

3、分离新旧链表。

技术图片

 

 

 

代码:

 1 /*
 2 struct RandomListNode {
 3     int label;
 4     struct RandomListNode *next, *random;
 5     RandomListNode(int x) :
 6             label(x), next(NULL), random(NULL) {
 7     }
 8 };
 9 */
10 class Solution {
11 public:
12     RandomListNode* Clone(RandomListNode* pHead)
13     {
14         RandomListNode* cur = pHead;
15         RandomListNode* list = NULL;
16         RandomListNode* tail = NULL;
17         if(cur == NULL) return NULL;
18         //复制原来的节点
19         while(cur){
20             RandomListNode* node = new RandomListNode(cur->label);
21             RandomListNode* next = cur->next;
22             
23             cur->next = node;
24             node->next = next;
25             
26             cur = node->next;
27         }
28         //random
29         cur = pHead;
30         while(cur){
31             if(cur->random){
32                 RandomListNode* next = cur->next;
33                 next->random = cur->random->next;
34             }
35             else    cur->next->random = NULL;
36             cur = cur->next->next;
37         }
38         
39         list = tail = pHead->next;
40         pHead->next = list->next;
41         cur = pHead->next;
42         while(cur){
43             RandomListNode* copy = cur->next;
44             cur->next = copy->next;
45             
46             tail->next = copy;
47             tail = copy;
48             
49             cur = cur->next;
50         }
51         return list;
52     }
53 };

 

【剑指offer】复杂链表的复制

标签:span   http   复杂链表的复制   pid   结果   题解   png   get   lan   

原文地址:https://www.cnblogs.com/Asumi/p/12404957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!