您的位置:首页 > 其它

复杂链表的复制(结点包含随机指针)

2015-09-07 13:29 316 查看


题目描述

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

思路:

1、在原链表上面复制,新节点连到相同的老结点后面;

2、复制随机指针,老结点的随机指针(老结点后面的结点的随机指针指向,老结点随机指针所指节点的下一个结点)

3、将两个链表分离,返回头指针;

代码如下:

RandomListNode* Clone(RandomListNode* pHead){
if(pHead == NULL)return NULL;
RandomListNode* currNode = pHead;
while(currNode){
RandomListNode* node = new RandomListNode(currNode->label);
node->next = currNode->next;
currNode->next = node;
currNode = node->next;
}
currNode = pHead;
while(currNode){
RandomListNode* node = currNode->next;
if(currNode->random){
node->random = currNode->random;
}
currNode = node->next;
}
RandomListNode* pHead_Clone = pHead->next;
RandomListNode* p;
currNode = pHead;
while(currNode->next){
p = currNode->next;
currNode->next = p->next;
currNode = p;
}
return pHead_Clone;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: