public class Solution {
public RandomListNode Clone(RandomListNode pHead)
{
//如果链表为null,则返回null
if(pHead == null) return null;
//如果链表不为null,则创建一个新的头节点,两个指针,一个指向老链表当前节点,另一个指向新链表当前节点。
RandomListNode newHead = new RandomListNode(pHead.label);
RandomListNode cuur = pHead;
RandomListNode newCuur = newHead;
//当老链表的当前节点不为null时,遍历链表每次将老链表的next和random赋值给新节点,如果next或random为null则赋值null。
while(cuur != null){
newCuur.next = cuur.next == null ? null : new RandomListNode(cuur.next.label);
newCuur.random = cuur.random == null ? null : new RandomListNode(cuur.random.label);
cuur = cuur.next;
newCuur = newCuur.next;
}
//最后返回新链表的头节点
return newHead;
}
}