您的位置:首页 > Web前端

剑指offer:复杂链表复制

2015-07-27 19:25 567 查看
1.p A->B->C->D->E=>A->A‘->B->B'->C->C'->D->D'->E->E'

2.找到A',B',C',D',E'的随机指针指向

3.将复制后的链表A' B' C' D' E'拆出来

public class Solution {
public RandomListNode Clone(RandomListNode pHead)
{
RandomListNode p=pHead;
while(p!=null){   //两个p之间插一个q
RandomListNode q=new RandomListNode(pHead.label);
q.next=p.next;
p.next=q;
p=q.next;
}
RandomListNode qHead=pHead.next,q=null;
q=qHead;
p=pHead;
while(q!=null){    //复制random指针
q.random=p.random.next;
q=q.next.next;
p=p.next.next;
}
q=qHead;
while(q!=null){         //拆除q链表
q.next=q.next.next;
q=q.next;
}
return qHead;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: