复制带有随机指针的链表

来源:互联网 发布:java iterator() 编辑:程序博客网 时间:2024/06/17 10:12

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.

public class Solution {    public RandomListNode copyRandomList(RandomListNode head) {         if(head==null){             return head;         }         RandomListNode h=head;        while(h!=null){            RandomListNode next=h.next;            RandomListNode node=new RandomListNode(h.label);            h.next=node;            node.next=next;            h=next;        }        h=head;        while(h!=null&&h.next!=null){            h.next.random=h.random==null?null:h.random.next;            h=h.next.next;        }        h=head.next;        RandomListNode node=head;        while(node!=null&&node.next!=null){            RandomListNode next=node.next.next;            RandomListNode nodecopy=node.next;            node.next=next;            nodecopy.next=next!=null?next.next:null;            node=next;        }        return h;    }}
原创粉丝点击