给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深度拷贝。
由题可知,此链表除过结点本身的值和next指向,每个结点还附加一个可以指向任何结点或空的random指向。我们先来创建这个类。
class CNode{
int val;
CNode next = null;
CNode random = null;
CNode(int val){
this.val = val;
}
}
那么上图的链表可以这样表示:
CNode h1 = new CNode(1);
CNode h2 = new CNode(3);
CNode h3 = new CNode(5);
CNode h4 = new CNode(7);
h1.next = h2;
h2.next = h3;
h3.next = h4;
h1.random = h3;
h2.random = h1;
h3.random = h3;
h4.random = null;
做好前面的准备,我们要想一想怎么复制这个链表,结点