• 复杂链表的复制


    题目描述
    输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
    (PS:在复杂链表中的节点,除了有一个指向下一个节点的指针,还有指向任意节点的指针。)

    分析
    在这里插入图片描述

    代码:

    //链表节点类
    public class RandomListNode {
        int label;
        RandomListNode next = null;
        RandomListNode random = null;
    
        RandomListNode(int label) {
            this.label = label;
        }
    }
    
    //实现类
    public class Solution {
    	
        public RandomListNode Clone(RandomListNode pHead)
        {
        	if(pHead == null) {
        		return null;
        	}
        	
        	RandomListNode currentNode = pHead;
        	while(currentNode != null) {
        		RandomListNode cloneNode = new RandomListNode(currentNode.label);
        		RandomListNode nextNode = currentNode.next;
        		currentNode.next = cloneNode;
        		cloneNode.next = nextNode;
        		currentNode = nextNode;
        	}
        	
        	currentNode = pHead;
        	while(currentNode != null) {
        		currentNode.next.random = currentNode.random == null ? null : currentNode.random.next;
        		currentNode = currentNode.next.next;
        	}
        	
        	currentNode = pHead;
        	RandomListNode pCloneHead = pHead.next;
        	
        	while(currentNode != null) {
        		RandomListNode cloneNode = currentNode.next;
        		currentNode.next = cloneNode.next;
        		cloneNode.next = cloneNode.next == null ? null : cloneNode.next.next;
        		currentNode = currentNode.next;
        	}
        	
        	return pCloneHead;
    
        }
    }
    
  • 相关阅读:
    hihoCoder #1077 RMQ问题再临-线段树
    ms sql 获取字符串首字母
    如何设置gen_server在退出时执行相关操作
    C++拾遗
    [置顶] Linux下文件和目录权限说明
    Android百度地图之显示地图
    USACO March. 2012
    JNI之HelloWorld
    复习C语言系列二:动态调用函数指针数组
    HDU2527:Safe Or Unsafe(哈弗曼树)
  • 原文地址:https://www.cnblogs.com/lishanlei/p/10707707.html
Copyright © 2020-2023  润新知