gpt4 book ai didi

java - 构建链表java

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:47 24 4
gpt4 key购买 nike

我正在尝试根据用户的输入在 java 中构建一个链表。但是,我得到的返回列表似乎总是通过最后一个节点而不是第一个节点引用,这对我来说是行不通且无益的。我试图通过引用第一个 node-pos 并返回引用来解决它,但它没有帮助。例如,对于输入 1、2、3、4,当尝试打印链表时它只打印 4。代码

//input : The function gets values
//output : The function builds a linked list with the given numbers
public static Node<Integer> buildList(){
int num;
System.out.println("Enter values for the linked list(-999 to stop)");
num=reader.nextInt();
Node<Integer> list=new Node<Integer>(num);
Node<Integer> pos=list;
while(num!=-999){
num=reader.nextInt();
if(num!=-999){
Node<Integer> newNode=new Node<Integer>(num);
newNode.setNext(list);
list=newNode;
}
}
return pos;
}

有人知道我做错了什么吗?我将非常感谢您的帮助。

最佳答案

您没有在后面添加新条目。问题在于这个

 Node<Integer> newNode=new Node<Integer>(num);
newNode.setNext(list);
list=newNode;

此代码在链表的 添加新节点。在该方法的最后,您返回引用 pos,它是对您插入的第一个节点(链表中的最后一个节点)的引用。如果您在函数末尾返回对 newNode 的引用,您将拥有

4->3->2->1

这是在链表末尾附加新节点的正确版本

 Node<Integer> newNode = new Node<Integer>(num);
list.setNext(newNode); //Link previous node to current node.
list = newNode;

注意:当用户输入 -999 作为第一个数字时,您必须注意大小写。在这种情况下,您仍将创建一个节点(如果这是您想要的也没关系)。

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

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