Java 连接结构

Java 连接结构,java,linked-list,Java,Linked List,我目前正在研究Java中的链接结构。我正在使用一个类来创建节点。特别是一个方法,它将连接两个节点并返回表示此联合的第三个节点。Node1={1,2,3};Node2={4,5,6}concat(Node1,Node2)={1,2,3,4,5,6}) 代码如下。作为练习的一部分,三个节点应相互独立。我的解决方案是使用copy()方法复制节点。我想知道是否有更简单的方法来做这件事。 多谢各位 public class Node { int data; Node next; Node(int da

我目前正在研究Java中的链接结构。我正在使用一个类来创建节点。特别是一个方法,它将连接两个节点并返回表示此联合的第三个节点。Node1={1,2,3};Node2={4,5,6}concat(Node1,Node2)={1,2,3,4,5,6}) 代码如下。作为练习的一部分,三个节点应相互独立。我的解决方案是使用copy()方法复制节点。我想知道是否有更简单的方法来做这件事。 多谢各位

public class Node {

int data;
Node next;

Node(int data){
    this.data = data;
}

Node concat(Node list1, Node list2) {
    // The copy method basically creates a copy of the given Node.
    Node an = copy(list1); Node b = copy(list2);
    Node a = an;
    while(a != null) {
        if(a.next == null) {break;}
        a = a.next;
    }
    a.next = b;
    return an;
}

 Node copy(Node p) {
     Node nan = new Node(p.data);
     Node n = nan;
     p = p.next;


     while(p != null) {
         n.next = new Node(p.data);
         n = n.next;
         p = p.next;
     }
     return nan;
     }
     }

如果希望所有链中的所有节点都是独立的,则必须复制它们

无论如何,这里有一个稍微简化的代码版本:

Node concat(Node list1, Node list2) {
    Node clone = copy(list1);
    Node iter = clone;
    while (iter.next != null) {
        iter = iter.next;
    }
    iter.next = copy(list2);
    return clone;
}

Node copy(Node other) {
    Node clone = new Node(other.data);
    Node iter = clone;
    while (other.next != null) {
        other = other.next;
        iter.next = new Node(other.data);
        iter = iter.next;
    }
    return clone;
}

定义“最优”。我建议你试着在书堆上问一下。谢谢!不知道有代码审查。不过,我想知道的不是最优与否的问题,而是是否有更好的方法可以独立创建第三个节点,而不必复制其他两个节点。问题是“更好”是观点。至少最佳的可能是“时间”或“空间”。我想知道的是,复制节点是否是保持节点相互独立的必要条件。谢谢,伙计,我忘了添加。下一步是循环条件!