題目描述
{
if(pHead==NULL)
return NULL;
///copy
RandomListNode* p = pHead;
RandomListNode* p_copy = NULL;
while(p!=NULL){
RandomListNode* p_next =p->next;
///build a new p
p_copy = new RandomListNode(p->label);
//link after p
p->next = p_copy;
p_copy->next = p_next;
p=p_next;
}
///copy random link
p = pHead;
while(p!=NULL){
p_copy =p->next;
if(p->random!=NULL){
p_copy->random = p->random->next;
}
p=p_copy->next;
}
///break
p = pHead;
p_copy = p->next;
RandomListNode*newHead = p->next;
while(p){
p->next = p_copy->next;
p=p->next;
if(p){
p_copy->next=p->next;
p_copy=p_copy->next;
}
}
/////////////////////破壞了原來的指針
/*
while(p_copy->next!=NULL){
p->next = p_copy->next;
p=p->next;
p_copy->next=p->next;
p_copy=p_copy->next;
}
*/
return newHead;
}