您的位置:首页 > 其它

复杂链表复制

2019-06-06 16:14 78 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zb_915574747/article/details/91045596

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

代码:

[code]class Solution {
public:
//链表复制,三步,复制节点,复制随机指针,链表分离
RandomListNode* Clone(RandomListNode* pHead)
{
if(!pHead)
return nullptr;
RandomListNode *p;
p=pHead;
//1   while(p){
RandomListNode *t=new RandomListNode(p->label);
t->next=p->next;
p->next=t;
p=t->next;
}
p=pHead;
//2    while(p){
RandomListNode *t=p->next;
if(p->random)
t->random=p->random->next;
p=t->next;
}
p=pHead;
RandomListNode *clone=p->next;
//3   while(p!=nullptr){
RandomListNode *t=p->next;
p->next=t->next;
t->next=t->next==nullptr?nullptr:t->next->next;
p=p->next;
}
return clone;
}
};

第三步链表分离,t->next=t->next==nullptr?nullptr:t->next->next;无判断会段错误

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: