我目前正在研究Java中的链接结构。我正在与一个类一起制作节点。具体来说,该方法将连接两个节点并返回代表该联合的第三个节点。节点1 = {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;
}