java 实现单链表节点的复制

来源:互联网 发布:淘宝女装banner 编辑:程序博客网 时间:2024/06/14 12:42

题目要求:复制一个单链表,返回复制之后链表的头结点;注(不能返回复制之前的头结点)

/**
         * 思想:先让指针p指向原始链表的头结点,声明一个复制链表的头结点为空,同时声明另外一个指针指向该复制链表的头结点;
         *        若是首次复制节点,则复制链表的头结点的next为空,并让指针q指向该头结点;
         *   否则,再次new一个节点,让指针q指向该节点,直到读取到初始链表的最后一个节点;
    */

节点类:public class Node {int val;Node next = null;public Node(int val){this.val = val;}}
public class TestNode {public static void main(String[] args) {Node n1 = new Node(1);Node n2 = new Node(2);Node n3 = new Node(3);Node n4 = new Node(4);Node n5 = new Node(5);n1.next = n2;n2.next = n3;n3.next = n4;n4.next = n5;n5.next = null;Node t = n1;while(t != null){System.out.print(t.next + " ");t = t.next;}//Node@4b6e3f87 Node@330cdec1 Node@11f46b16 Node@45a27a8f null System.out.println();/** * 思想:先让指针p指向原始链表的头结点,声明一个复制链表的头结点为空,同时声明另外一个指针指向该复制链表的头结点; *    若是首次复制节点,则复制链表的头结点的next为空,并让指针q指向该头结点; *   否则,再次new一个节点,让指针q指向该节点,直到读取到初始链表的最后一个节点; */Node p = n1;Node list = null;Node q = list;while(p != null){if(list == null){list = new Node(p.val);q = list;}else{Node n = new Node(p.val);q.next = n;q = q.next;}p = p.next;}Node test = list;while(test != null){System.out.print(test.next + " ");test = test.next;}//Node@2e1c6600 Node@4a6ca1a6 Node@21e8bf76 Node@3771ed5e null }}
结果如下:

Node@4b6e3f87 Node@330cdec1 Node@11f46b16 Node@45a27a8f null
Node@2e1c6600 Node@4a6ca1a6 Node@21e8bf76 Node@3771ed5e null


原创粉丝点击