您的位置:首页 > 职场人生

面试题26:复杂链表的复制

2018-03-16 18:40 288 查看
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
思想:



java实现public static RandomListNode clone(RandomListNode pHead) {
//复制节点并插入到原节点之后
if(pHead==null) return null;
RandomListNode pNode=pHead;
while(pNode!=null) {
RandomListNode pClone=new RandomListNode(pNode.label);
pClone.next=pNode.next;
pNode.next=pClone;
pNode=pClone.next;
}
//历链表,A1->random = A->random->next;
pNode=pHead;
while(pNode!=null) {
if(pNode.random!=null) {
pNode.next.random=pNode.random.next;
}
pNode=pNode.next.next;
}
//将链表拆分成原链表和复制后的链表
pNode=pHead;
RandomListNode pCloneHead=pNode.next;
RandomListNode pCloneNode=pNode.next;
pNode.next=pCloneNode.next;
pNode=pNode.next;

while(pNode!=null) {
pCloneNode.next=pNode.next;
pCloneNode=pCloneNode.next;
pNode.next=pCloneNode.next;
pNode=pNode.next;
}
return pCloneHead;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表