gpt4 book ai didi

java - 如何将一个节点链插入另一个节点链

转载 作者:行者123 更新时间:2023-12-02 09:15:22 25 4
gpt4 key购买 nike

晚上好,我有一个问题。我创建了一个 Node 类:

public class Node {
private int value;
private Node next;
private Node prev;

Node(int value) {
this.value = value;
this.next = null;
}

Node(int value, Node next) {
this.value = value;
this.next = next;
}

public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}

public void printXXX() {
System.out.println("Node : " + this.value);
}




public boolean hasNext() {
if(this.next != null) {
return true;
} else {
return false;
}
}

我有一个任务来打印一个新的节点链,我需要使用一个函数将一个节点链插入到另一个节点链中间的某个位置。例如 Node1[25,28,32,39,60,70] Node2[43,49,52,58] 我想要一个函数返回 节点[25,28,32,39,43,49,52,58,60,70]

我这里显示了一个代码:

public class Main {

public static void createANewChain(Node node1, Node node2) {
boolean flag = false;
while(node1.getNext() != null) {
if(node1.getNext().getValue()>node2.getValue()) {
node1.setNext(node2);
flag = true;

while (node2.getNext() != null) {
node2 = node2.getNext();
}

//node2.setNext(node1.getNext()); //error
}
else
{
node1 = node1.getNext();
}


}

if(flag == false) {
while(node1.getNext() != null) {
node1 = node1.getNext();
}
node1.setNext(node2);
}


}

public static void printANewChain(Node node1) {
while(node1.hasNext()) {
System.out.println(node1.getValue());
node1 = node1.getNext();
}
System.out.println(node1.getValue());
}

public static void main(String[] args) {
Node n6 = new Node(70);
Node n5 = new Node(60,n6);
Node n4 = new Node(39,n5);
Node n3 = new Node(32,n4);
Node n2 = new Node(28,n3);
Node n1 = new Node(25,n2);


Node g4 = new Node(58);
Node g3 = new Node(52,g4);
Node g2 = new Node(49,g3);
Node g1 = new Node(45,g2);





createANewChain(n1,g1);
printANewChain(n1);

}


}

最后,我得到了一个无限循环。所以,问题是,在将第一个节点链接到第二个节点后,我丢失了链接 Node2

后应该去的链的所有部分

Node1[25,28,32,39] ... [60,70] - 我丢失了它们

在任务中,来自 Node2 的所有数字都应该位于 Node1 中两个特定数字之间的喘息中

请帮助我找到如何链接其中两个节点的解决方案。我希望我清楚地解释了这项任务。祝您有美好的一天,感谢您的解决方案。

最佳答案

比这更简单。但首先,你的函数定义不正确。您需要指定要追加到哪个节点以及要插入哪个节点,例如

public static void createANewChain(Node nodeToAppendTo, Node nodeToInsert) {

那么,你需要做的是

将nodeToAppendTo后面的节点的前一个值(nodeToAppend.next.prev)设置为nodeToInsert的最后一个元素,反之亦然(nodeToInsert最后一个元素.next=nodeToAppendTo后面的节点,并同样设置nodeToAppendTo的最后一个元素)

然后将nodeToAppendTo.next设置为nodeToInsert,将nodeToInsert.previous设置为nodeToAppendTo

这是将一个链接列表插入另一个链接列表的方法。

因为我认为这是一个家庭作业问题,所以我把我伪编码的内容留给你来编码

关于java - 如何将一个节点链插入另一个节点链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59039622/

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