A linked list is given such that each node contains an additional random pointer which could point t
Posted Adding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A linked list is given such that each node contains an additional random pointer which could point t相关的知识,希望对你有一定的参考价值。
图解:
此题过程分为三个阶段,分别是 1、负责后面一个节点,并且将这个节点插入到原来链表中 2、复制后面一个节点的random指针。 3 拆分组合链表为两部分。
第一部分代码:
while(currentnode!=null){//复制节点,并且将节点插入到该节点的后面 RandomListNode clonenode=new RandomListNode(currentnode.label); clonenode.next=currentnode.next; currentnode.next=clonenode; currentnode=clonenode.next; }
第二部分 代码:
currentnode=head; while(currentnode!=null){//复制随机指针。 RandomListNode clonenode=currentnode.next; if(currentnode.random!=null){ clonenode.random=currentnode.random.next;//这里要指向随机指针的后一个,因为是复制滴啊,千万不要忘记了。 } currentnode=clonenode.next; }
第三部分代码:
RandomListNode cloneHead=head.next; currentnode=head; while(currentnode.next!=null){ RandomListNode temp=currentnode.next; currentnode.next=temp.next; currentnode=temp; }
总的代码:
class RandomListNode { int label; RandomListNode next, random; RandomListNode(int x) { this.label = x; } }; public class Solution { public RandomListNode copyRandomList(RandomListNode head) { if(head==null)return null; RandomListNode currentnode=head; while(currentnode!=null){//复制节点,并且将节点插入到该节点的后面 RandomListNode clonenode=new RandomListNode(currentnode.label); clonenode.next=currentnode.next; currentnode.next=clonenode; currentnode=clonenode.next; } currentnode=head; while(currentnode!=null){//复制随机指针。 RandomListNode clonenode=currentnode.next; if(currentnode.random!=null){ clonenode.random=currentnode.random.next;//这里要指向随机指针的后一个,因为是复制滴啊,千万不要忘记了。 } currentnode=clonenode.next; } RandomListNode cloneHead=head.next; currentnode=head; while(currentnode.next!=null){ RandomListNode temp=currentnode.next; currentnode.next=temp.next; currentnode=temp; } return cloneHead; } }
以上是关于A linked list is given such that each node contains an additional random pointer which could point t的主要内容,如果未能解决你的问题,请参考以下文章
Convert a given Binary Tree to Doubly Linked List
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k
Convert a given binary tree to double linked list
Leetcode 142. Linked List Cycle IIJAVA语言