这篇文章给大家分享的是有关java复制多向链表的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的北镇网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!多向链表结构如
public class Node{ public int value; public Node next; public Node rand; public Node(int data){ this.value = data; } }
方法一:使用HashMap结构
public class CopyFromMultiNode { public static void main(String[] args){ int[] array = {12,3,4,5,6,77,6,54,56,6,7,87,15,15,15}; //数组转Node Node head = array2node(array); Node help = head; System.out.print("处理前 "); while(help != null){ System.out.print(help.value + " "); help = help.next; } //使用HashMap结构 Node res = copyFromRand1(head); System.out.println(); System.out.print("处理后结果:"); while(res != null){ System.out.print(res.value+" "); res = res.next; } } //使用HashMap结构 public static Node copyFromRand1(Node head){ Node cur = head; HashMapmap = new HashMap<>(); while(cur != null){ map.put(cur, new Node(cur.value)); cur = cur.next; } cur = head; while(cur != null){ map.get(cur).next = map.get(cur.next); map.get(cur).rand = map.get(cur.rand); cur = cur.next; } return map.get(head); } //数组转Node功能,供测试使用 public static Node array2node(int[] array){ Node head = new Node(array[0]); Node cur = head; for(int i=1; i 2、使用几个有效变量方法,无需其他结构
//使用几个有效变量方法 //替换方法一的copyFromRand1方法 public static Node copyFromRand2(Node head){ Node next = null; Node cur = head; //1 -> 2 -> 3 -> 4 ==> 1 -> 1` -> 2 -> 2` -> 3 -> 3` -> 4 -> 4 //完成链表拼接 while(cur != null){ next = cur.next; cur.next = new Node(cur.value); cur.next.next = next; cur = next; } cur = head; Node curCopy = null; //添加Node的rand值 while(cur != null){ next = cur.next.next; curCopy = cur.next.next; curCopy = cur.rand != null? cur.rand.next: null; cur = next; } Node res = head.next; cur = head; //拆分 // 1 -> 1` -> 2 -> 2` -> 3 -> 3` -> 4 -> 4 // ==> 1 -> 2 -> 3 -> 4 和 1`-> 2`-> 3`-> 4` while(cur != null){ next = cur.next.next; curCopy = cur.next; cur.next = next; curCopy.next = next != null ? next.next:null; cur = next; } return res; }感谢各位的阅读!关于java复制多向链表的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!
当前标题:java复制多向链表的方法-创新互联
分享链接:http://cdweb.net/article/csphji.html