[英]Clone a linked list with random pointer c++
我正在研究克隆具有随机指针的链表的问题。 问题陈述
LinkListNode* CloneLink(LinkListNode* orig){
LinkListNode* cloneLinkStart=NULL;
LinkListNode* head=orig;
map<LinkListNode*,LinkListNode*> m;
while(head){
cloneLinkStart=new LinkListNode(head->val);
m[cloneLinkStart]=head;
head=head->next;
}
head=orig;
while(head){
cloneLinkStart=m[head];
cloneLinkStart->next=m[head->next];
cloneLinkStart->random=m[head->random];
head=head->next;
}
return m[orig];
}
我已经从网上获得了这个想法,并试图实现它。 但是我在第二个while循环的第二行遇到了分段错误。 任何提示我的错误都会对我有所帮助。
if(!head)
return head;
RandomListNode* cloneLinkStart=NULL;
RandomListNode* orig=head;
map<RandomListNode*,RandomListNode*> m;
while(orig){
cloneLinkStart=new RandomListNode(orig->label);
m[orig]=cloneLinkStart;
orig=orig->next;
}
orig=head;
while(orig){
cloneLinkStart=m.find(orig)->second;
if(orig->next)
cloneLinkStart->next=m.find(orig->next)->second;
else
cloneLinkStart->next=NULL;
if(orig->random)
cloneLinkStart->random=m.find(orig->random)->second;
else
cloneLinkStart->random=NULL;
orig=orig->next;
cloneLinkStart=cloneLinkStart->next;
}
return m.find(head)->second;
我修改后的代码有效。 谢谢@杰里·科芬
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.