/* public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; } } */ public class Solution { public RandomListNode Clone(RandomListNode pHead) { //null情况处理 if(pHead == null){ return null; } RandomListNode cur = pHead; //在所有节点后面增加一个新的节点,随机指针指向原链表的节点或null while(cur != null){ RandomListNode tmp =cur.next; RandomListNode node = new RandomListNode(cur.label); cur.next = node; node.random = cur.random; node.next = tmp; cur = tmp; } cur = pHead; //修改素有新增节点的随机指针指向其原来指向节点的下一节点即新增节点。注意null的情况。 while(cur != null){ cur = cur.next; if(cur.random != null){ cur.random = cur.random.next; } cur = cur.next; } cur = pHead; RandomListNode newhead = cur.next; //将新增节点从列表中拆出来,完成列表的复制 while(cur != null){ RandomListNode ncur = cur.next; cur.next = ncur.next; cur = cur.next; if(cur != null){ ncur.next = cur.next; } ncur = ncur.next; } return newhead; } }
原文:https://www.cnblogs.com/MoonBeautiful/p/13056671.html