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

来源:互联网 发布:技术支持0538泰安网络 编辑:程序博客网 时间:2024/05/01 05:17
题目描述

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

代码:

<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>


0 0