晚上好,我有一个问题。我创建了一个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;
}
}
我有一个任务来打印一个新的Node链,我需要使用一个函数将一个Node链插入到中间某个位置的另一个Node链中。例如Node1[25,28,32,39,60,70]
Node2[43,49,52,58]
,而我想让一个函数返回Node[25,43,58,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,39]
... [60,70]
-我输了
在任务中,Node2
中的所有数字都应位于Node1
中两个特定数字之间的倒抽中
请帮助我找到有关如何链接其中两个节点的解决方案。我希望我能清楚地解释任务。 祝您有美好的一天,并感谢您的解决方案。