标签:blog io for on 2014 log ad ef new
/**
* Definition for singly-linked list with a random pointer.
* struct RandomListNode {
* int label;
* RandomListNode *next, *random;
* RandomListNode(int x) : label(x), next(NULL), random(NULL) {}
* };
*/
class Solution {//为了能够快速定位某个节点,采用确定性映射的方式,将复制链表的节点作为原链表对应节点的下一个节点
public:
RandomListNode *copyRandomList(RandomListNode *head) {
//每个节点指向其复制链表对应的节点,从而可以快速定位该节点
if(!head)return NULL;
RandomListNode *p,*q;
p=head;
while(p){
q=new RandomListNode(p->label);
q->next=p->next;
p->next=q;
p=q->next;
}
p=head;
while(p){
q=p->next;
if(p->random)
q->random=p->random->next;
p=q->next;
}
p=head;
RandomListNode*head2=p->next;
q=head2;
while(p){
p->next=q->next;
p=p->next;
if(p){
q->next=p->next;
q=q->next;
}
}
return head2;
}
};[LeetCode]Copy List with Random Pointer复杂链表的复制
标签:blog io for on 2014 log ad ef new
原文地址:http://blog.csdn.net/cklsoft/article/details/40779905