有关Node的题都要小心,别写错了,多练~~
这题分三步走~
public class Solution {
public RandomListNode Clone(RandomListNode pHead)
{
if(pHead==null) return null;
//复制每个节点到原节点后面。
RandomListNode currentNode=pHead;
while(currentNode!=null){
RandomListNode cloneNode=new RandomListNode(currentNode.label);
RandomListNode nextNode=currentNode.next;
currentNode.next=cloneNode;
cloneNode.next=nextNode;
currentNode=nextNode;
}
//遍历新链表,依照老链表的random部分,赋值新链表的random值。
currentNode=pHead;
while(currentNode!=null){
currentNode.next.random=currentNode.random==null?null:currentNode.random.next;
currentNode=currentNode.next.next;
}
//将现链表拆分成两部分,老链表&赋值版本链表。
currentNode=pHead;
RandomListNode pCloneHead=pHead.next;
while(currentNode!=null){
RandomListNode cloneNode=currentNode.next;
currentNode.next=cloneNode.next;
cloneNode.next=cloneNode.next==null?null:cloneNode.next.next;
currentNode=currentNode.next;
}
return pCloneHead;
}
}
转载:https://blog.csdn.net/m0_37976836/article/details/101562164
查看评论