public RandomListNode Clone(RandomListNode pHead){ if (pHead == null) { returnnull; } RandomListNode cloneHead = new RandomListNode(pHead.label); RandomListNode pre = cloneHead; RandomListNode p = pHead.next; while (p != null) { pre.next = new RandomListNode(p.label); pre = pre.next; p = p.next; } for (RandomListNode pt = pHead, cp = cloneHead; pt != null; pt = pt.next, cp = cp.next) { if (pt.random != null) { cp.random = findNode(pt.random.label, cloneHead); } } return cloneHead; }
public RandomListNode findNode(int label, RandomListNode head){ for (RandomListNode p = head; p != null; p = p.next) { if (p.label == label) { return p; } } returnnull; }