您的位置:首页 > 编程语言 > C语言/C++

剑指offer第二十五题【复杂链表的复制】c++实现

2015-10-20 12:16 399 查看
复杂链表的复制

参与人数: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 剑指offer 算法