复杂链表的复制
- 参与人数:1297时间限制:1秒空间限制:32768K
- 通过比例:17.22%
- 最佳记录:0 ms|8552K(来自 LuLu1990)
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。
将复制后的节点插入在原节点后面
然后就有node->random=old->random->next;
最后再拆分成两个链表
RandomListNode* Clone(RandomListNode* pHead)
{
if(!pHead){
return NULL;
}
RandomListNode *old;
for(old=pHead;old;){
RandomListNode * node=new RandomListNode(old->label);
node->next=old->next;
old->next=node;
old=node->next;
}
for(old=pHead;old;){
RandomListNode * node=old->next;
if(old->random){
node->random=old->random->next;
}
old=node->next;
}
RandomListNode *res =pHead->next;
for(old=pHead;old;){
RandomListNode * node=old->next;
old->next=node->next;
old=old->next;
if(old){
node->next=old->next;
}
}
return res;
}