zoukankan      html  css  js  c++  java
  • 复杂链表的复制(java)

    问题描述                                                                                                        

    时间输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),

    返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

    题解                                                                                                                

     1 /*
     2 public class RandomListNode {
     3     int label;
     4     RandomListNode next = null;
     5     RandomListNode random = null;
     6 
     7     RandomListNode(int label) {
     8         this.label = label;
     9     }
    10 }
    11 */
    12 public class Solution {
    13     public RandomListNode Clone(RandomListNode pHead)
    14     {
    15         cloneNodes(pHead);
    16         cloneRandom(pHead);
    17         return ReConnectNode(pHead);
    18     }
    19     
    20     private void cloneNodes(RandomListNode pHead){
    21         RandomListNode pNode=pHead;
    22         while(pNode!=null){
    23             RandomListNode randomListNode=new RandomListNode(pNode.label);
    24             randomListNode.next=pNode.next;
    25             pNode.next=randomListNode;
    26             pNode=randomListNode.next;
    27         }
    28     }
    29      
    30     private void cloneRandom(RandomListNode pHead){
    31         RandomListNode pNode=pHead;
    32         while(pNode!=null){
    33             System.out.println(pNode.label);
    34             if(pNode.random!=null){
    35                 pNode.next.random=pNode.random.next;
    36             }else{
    37                 pNode.next.random=null;
    38             }
    39             pNode=pNode.next.next;
    40         }
    41     }
    42      
    43     public static RandomListNode ReConnectNode(RandomListNode pHead){
    44         RandomListNode node = pHead;
    45         RandomListNode pCloneHead = null;
    46         RandomListNode pCloneNode = null;
    47         if(node!=null){
    48             pCloneHead = pCloneNode = node.next;
    49             node.next = pCloneHead.next;
    50             node = node.next;
    51         }
    52         while(node!=null){
    53             pCloneNode.next = node.next;
    54             pCloneNode = pCloneNode.next;
    55             node.next = pCloneNode.next;
    56             node = node.next;
    57         }
    58         return pCloneHead;
    59     }
    60 }
  • 相关阅读:
    托付和事件的使用
    在使用supervisord 管理tomcat时遇到的小问题
    无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
    (转)Openlayers 2.X加载高德地图
    (转)openlayers实现在线编辑
    (转) Arcgis for js加载百度地图
    (转)Arcgis for js加载天地图
    (转) 基于Arcgis for Js的web GIS数据在线采集简介
    (转) Arcgis for js之WKT和GEOMETRY的相互转换
    (转)Arcgis for Js之Graphiclayer扩展详解
  • 原文地址:https://www.cnblogs.com/rainydayfmb/p/8068236.html
Copyright © 2011-2022 走看看