复杂链表的复制标题描述输入一个复杂链表(每个节点有一个节点值,和两个指针,一个指向下一个节点,另一个特殊指针随机指向到一个随机节点),请深拷贝这个链表,并返回拷贝的头节点。(注意,输出结果中请不要返回参数中的节点引用,否则判断程序会直接返回空)题目链接:复杂链表复制代码/***标题:复杂链表复制*标题说明*输入一个复杂的链表(每个节点都有一个节点值,还有两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请深拷贝这个链表,*并返回复制的头节点。(注意,输出结果中请不要返回参数中的节点引用,否则判断程序会直接返回空)*题目链接:*https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&&tqId=11178&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking*/publicclassJz25{/***方法:*第一步将复制的节点插入到每个节点后面。*第二步,给复制节点的随机链接赋值。*第三步,拆分。**@parampHead*@return*/publicRandomListNodeclone(RandomListNodepHead){if(pHead==null){返回null;}//插入一个新节点RandomListNodecur=pHead;while(cur!=null){RandomListNodeclone=newRandomListNode(cur.label);clone.next=cur.next;cur.next=克隆;cur=clone.next;}//创建随机链接cur=pHead;while(cur!=null){RandomListNodeclone=cur.next;if(cur.random!=null){clone.random=cur.random.next;}cur=clone.next;}//拆分cur=pHead;RandomListNodepCloneHead=pHead.next;while(cur.next!=null){RandomListNodenext=cur.next;cur.next=next.next;当前=下一个;}返回pCloneHead;
