首页 > 其他 > 详细

复杂链表的复制

时间:2016-01-24 22:27:34      阅读:279      评论:0      收藏:0      [点我收藏+]

题目描述

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。
 
 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         if(pHead == NULL)
15             return NULL;
16 
17         RandomListNode* p = pHead;
18         std::map<int,RandomListNode*> mm;
19         while(p!= NULL)
20         {
21             RandomListNode* ptem = new RandomListNode(p->label);
22             mm[p->label] = ptem;
23             p = p->next;
24         }
25         p = pHead;
26         while(p != NULL)
27         {
28             if(p->next != NULL)
29             mm[p->label]->next = mm[p->next->label];
30             if(p->random != NULL)
31             mm[p->label]->random = mm[p->random->label];
32             p = p->next;
33         }
34         return mm[pHead->label];
35     }
36 };

 

复杂链表的复制

原文:http://www.cnblogs.com/xiaoyesoso/p/5156100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!