复杂链表的复制。。。链表的复制

来源:互联网 发布:货运平台软件下载 编辑:程序博客网 时间:2024/06/06 06:31

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

class Solution {public:    RandomListNode* Clone(RandomListNode* pHead)    {        if(pHead==NULL)            return NULL;        map<RandomListNode*,RandomListNode*> table;        //第一个节点        RandomListNode* pClonedHead=new RandomListNode(pHead->label);        table[pHead]=pClonedHead;        RandomListNode* pNode=pHead->next;        RandomListNode* pClonedNode=pClonedHead;        //接龙        while(pNode!=NULL)        {            RandomListNode* pClonedTail=new RandomListNode(pNode->label);            pClonedNode->next=pClonedTail;            pClonedNode=pClonedNode->next;            table[pNode]=pClonedNode;            pNode=pNode->next;        }        //再来一次,为了random        pNode=pHead;        pClonedNode=pClonedHead;        while(pNode!=NULL)        {            pClonedNode->random=table[pNode->random];            pNode=pNode->next;            pClonedNode=pClonedNode->next;        }        return pClonedHead;    }};

还有拆分和递归两种方法。

0 0
原创粉丝点击