剑指offer(四十八)之复杂链表的复制

Posted 奔跑着的国风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer(四十八)之复杂链表的复制相关的知识,希望对你有一定的参考价值。

题目描述

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

代码:

<span style="color:#000099;">import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Solution {
    public RandomListNode Clone(RandomListNode pHead)
    {
        HashMap<RandomListNode,RandomListNode> map = new HashMap<RandomListNode,RandomListNode>();
        RandomListNode p = pHead;
        RandomListNode q = new RandomListNode(-1);
        while(p!=null){
            RandomListNode t = new RandomListNode(p.label);
            map.put(p, t);
            p = p.next;
            q.next = t;
            q = t;
        }
        Set<Entry<RandomListNode,RandomListNode>> set = map.entrySet();        
        Iterator<Entry<RandomListNode,RandomListNode>> it = set.iterator();        
        while(it.hasNext()){
            Entry<RandomListNode, RandomListNode> next = it.next();            
            next.getValue().random = map.get(next.getKey().random);
        }
        return map.get(pHead);
    }
}</span>


以上是关于剑指offer(四十八)之复杂链表的复制的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer--35复杂链表的复制

剑指offer--35复杂链表的复制

剑指OFFER 复杂链表的复制

复杂链表的复制-剑指Offer

剑指offer复杂链表的复制

剑指offer 复杂链表的复制