gpt4 book ai didi

java - 链接结构

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:32 25 4
gpt4 key购买 nike

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

关于java - 链接结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com