class Solution {
public:
RandomListNode *copyRandomList(RandomListNode *head) {
// Note: The Solution object is instantiated only once and is reused by each test case.
RandomListNode *thead = NULL,*p,*q,*tmp;
map<RandomListNode *,RandomListNode *> m;
map<RandomListNode *,RandomListNode *>::iterator it;
if(head==NULL)
return NULL;
thead = new RandomListNode(head->label);
m[head] = thead;
p = head->next;
q = thead;
while(p!=NULL){
tmp = new RandomListNode(p->label);
m[p] = tmp;
q->next = tmp;
q = tmp;
p = p->next;
}
p = head, q = thead;
while(p!=NULL){
if(p->random!=NULL){
it = m.find(p->random);
q->random = it->second;
}
p = p->next;
q = q->next;
}
return thead;
}
};
public:
RandomListNode *copyRandomList(RandomListNode *head) {
// Note: The Solution object is instantiated only once and is reused by each test case.
RandomListNode *thead = NULL,*p,*q,*tmp;
map<RandomListNode *,RandomListNode *> m;
map<RandomListNode *,RandomListNode *>::iterator it;
if(head==NULL)
return NULL;
thead = new RandomListNode(head->label);
m[head] = thead;
p = head->next;
q = thead;
while(p!=NULL){
tmp = new RandomListNode(p->label);
m[p] = tmp;
q->next = tmp;
q = tmp;
p = p->next;
}
p = head, q = thead;
while(p!=NULL){
if(p->random!=NULL){
it = m.find(p->random);
q->random = it->second;
}
p = p->next;
q = q->next;
}
return thead;
}
};