您的位置:首页 > 其它

22.复杂链表的复制

2016-05-06 20:35 330 查看
复杂链表的复制

参与人数:2434时间限制:1秒空间限制:32768K

本题知识点: 链表

算法知识视频讲解


题目描述

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

最后一个while循环看了很久。

/*
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) return NULL;

RandomListNode* pNode1 = pHead;
while (pNode1 != NULL) {
RandomListNode* tmp = new RandomListNode(pNode1->label);
tmp->next = pNode1->next;
pNode1->next = tmp;
pNode1 = tmp->next;
}

RandomListNode* pNode2 = pHead;
while (pNode2 != NULL) {
if (pNode2->random != NULL) {
pNode2->next->random = pNode2->random->next;
}
pNode2 = pNode2->next->next;
}

RandomListNode *pCloneHead = pHead->next;
RandomListNode *currNode = pHead;
while(currNode->next){
RandomListNode *tmp = currNode->next;
currNode->next =tmp->next;
currNode = tmp;
}
return pCloneHead;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: