复杂链表的复制

来源:互联网 发布:投资数据库终端 编辑:程序博客网 时间:2024/06/04 18:53

题目描述

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。
/*struct RandomListNode {    int label;    struct RandomListNode *next, *random;    RandomListNode(int x) :            label(x), next(NULL), random(NULL) {    }};*/class Solution {public:    RandomListNode* Clone(RandomListNode* pHead)    {        if(pHead==NULL)            return NULL;        RandomListNode* p1=new RandomListNode(pHead->label);        p1=pHead;        while(pHead)        {            RandomListNode* p=new RandomListNode(pHead->label);        p->next=pHead->next;        pHead->next=p;        pHead=p->next;        }        RandomListNode* pp=p1;        while(pp)        {            RandomListNode* l=pp->next;            if(pp->random!=NULL)            l->random=pp->random->next;            pp=l->next;        }                RandomListNode* result=p1->next;        RandomListNode* head=result;        p1->next=result->next;        //RandomListNode* r=node->next;        p1=p1->next;        while(p1)        {            result->next=p1->next;            result=result->next;            p1->next=result->next;            p1=p1->next;        }        return head;    }};

0 0
原创粉丝点击