题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。
一定注意!!! 在这里耽误了不少时间!!!
注意要把pCur的next置为空,即不改变原来链表的结构。
pCur.next=null;
/**
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)
{
if(null==pHead) return null;
RandomListNode node=pHead;
while(node!=null){
RandomListNode temp=new RandomListNode(node.label);
temp.next=node.next;
temp.random=null;
node.next=temp;
node=temp.next;
}
node=pHead;
while(node!=null){
if(node.random!=null){
node.next.random=node.random.next;
}
node=node.next.next;
}
RandomListNode head = pHead.next;
RandomListNode cur = head;
RandomListNode pCur = pHead;
while(cur.next!=null){
pCur.next=pCur.next.next;
pCur=pCur.next;
cur.next=cur.next.next;
cur=cur.next;
}
//注意要把pCur的next置为空,即不改变原来链表的结构。
pCur.next=null;
return head;
}
}