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

来源:互联网 发布:微信发假红包软件最新 编辑:程序博客网 时间:2024/06/14 02:07
复杂链表的复制
  • 参与人数: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;}


0 0
原创粉丝点击