做复杂链表的复制,一直提交不过,童鞋们围观一下看哪的问题?
/*
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 (pHead == null) {
return null;
}
// 当前链表中插入clone结点
RandomListNode p = pHead;
while (p
!= null) {
RandomListNode newNode = new
RandomListNode(p.label);
newNode.next = p.next;
p.next =
newNode;
p = p.next.next;
}
// 給clone结点random赋值,为原结点randmon结点的next结点
p = pHead;
while (p != null) {
if (p.random != null) {
p.next.random =
p.random.next;
} else {
p.next.random = null;
}
p = p.next.next;
}
// 新结点单独成链表
p = pHead.next;
while (p != null) {
if (p.next == null) {
break;
}
p.next = p.next.next;
p = p.next.next;
}
return pHead.next;
}
}