# -*- coding:utf-8 -*- # class RandomListNode: # def __init__(self, x): # self.label = x # self.next = None # self.random = None class Solution: # 返回 RandomListNode def Clone(self, pHead): # write code here if pHead == None: return None pTmp = pHead while pTmp: node = RandomListNode(pTmp.label) node.next = pTmp.next pTmp.next = node pTmp = node.next # 实现新建的node的random的指向 pTmp = pHead while pTmp: if pTmp.random: pTmp.next.random = pTmp.random.next pTmp = pTmp.next.next # 断开原来的node和新的node之间的链接 pTmp = pHead newHead = pHead.next # 定义指针存储新链表表头,当返回值使用 pNewTmp = pHead.next while pTmp: pTmp.next = pTmp.next.next if pNewTmp.next: pNewTmp.next = pNewTmp.next.next pNewTmp = pNewTmp.next pTmp = pTmp.next return newHead