本文共 1245 字,大约阅读时间需要 4 分钟。
Copy List with Random Pointer
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.
Java代码:
/** * Definition for singly-linked list with a random pointer. * class RandomListNode { * int label; * RandomListNode next, random; * RandomListNode(int x) { this.label = x; } * }; */public class Solution { public RandomListNode copyRandomList(RandomListNode head) { if (null == head) return head; RandomListNode tmp = head; while (null != tmp) { RandomListNode next = tmp.next; RandomListNode node_add = new RandomListNode(tmp.label); node_add.next = tmp.next; node_add.random = tmp.random; tmp.next = node_add; tmp = tmp.next.next; } tmp = head.next; while (null != tmp) { if(null != tmp.random) tmp.random = tmp.random.next; if(null != tmp.next) tmp = tmp.next.next; else tmp =tmp.next; } tmp = head; RandomListNode new_head = head.next; RandomListNode tmp_2 = new_head; while (null != tmp.next && null !=tmp_2.next) { tmp.next = tmp.next.next; tmp_2.next = tmp_2.next.next; tmp = tmp.next; tmp_2 = tmp_2.next; } tmp.next = null; tmp_2.next= null; return new_head; }}
转载地址:http://jpuni.baihongyu.com/