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