剑指offer:复杂链表复制

来源:互联网 发布:xp系统32位java下载 编辑:程序博客网 时间:2024/06/05 22:36

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;    }}


0 0
原创粉丝点击