【剑指offer】4.4分解让复杂问题简单化——面试题26:复杂链表的复制

来源:互联网 发布:055 知乎 编辑:程序博客网 时间:2024/05/01 22:39

使用map的思想

//题目描述////输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。 #include<windows.h>#include<map>#include<iostream>using namespace std;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*p=pHead;//RandomListNode*root=(RandomListNode*)malloc(sizeof(RandomListNode));RandomListNode*root=new RandomListNode(0);RandomListNode*r=root;map<RandomListNode*,RandomListNode*>m;while(p!=NULL){//RandomListNode*q=(RandomListNode*)malloc(sizeof(RandomListNode));//q->label=p->label;RandomListNode*q=new RandomListNode(p->label);q->random=p->random;m[p]=q;r->next=q;r=r->next;p=p->next;}r=root->next;while(r!=NULL){r->random=m[r->random];r=r->next;}return root->next;    }};

0 0
原创粉丝点击