您的位置:首页 > 其它

复杂链表的复制

2016-01-24 22:02 183 查看

题目描述

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。

/*
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;
std::map<int,RandomListNode*> mm;
while(p!= NULL)
{
RandomListNode* ptem = new RandomListNode(p->label);
mm[p->label] = ptem;
p = p->next;
}
p = pHead;
while(p != NULL)
{
if(p->next != NULL)
mm[p->label]->next = mm[p->next->label];
if(p->random != NULL)
mm[p->label]->random = mm[p->random->label];
p = p->next;
}
return mm[pHead->label];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: