Java 为什么这段代码不创建一个链表?

Java 为什么这段代码不创建一个链表?,java,linked-list,nodes,Java,Linked List,Nodes,我试图在链表的末尾创建一个新节点,但不知怎么的,它不起作用。请帮忙 class Node{ int info; Node next; } Node head; void insert(int val){ Node nn = new Node(); nn.info = val; Node cur = head; if(cur==null){ cur = nn; } else{ while(cur.n

我试图在链表的末尾创建一个新节点,但不知怎么的,它不起作用。请帮忙

class Node{
    int info;
    Node next;
}
Node head;


void insert(int val){
    Node nn = new Node();
    nn.info = val;
    Node cur = head;
    if(cur==null){
        cur = nn;
    }
    else{
        while(cur.next!=null){
            cur = cur.next;
        }
        cur.next = nn;
    }
}

对于初始情况,您不会更改head的指针,head始终为null

应该是

if(head==null){
    head = nn;
}
改变cur=nn;头=nn


说明:你可能认为你在改变主意,但实际上你不是。由于head为空,因此,在执行cur=head和cur=nn时;不会将nn引用保存到head它将只保留cur

解释:您可能认为您正在更改head,但实际上您没有。由于head为空,因此,在执行cur=head和cur=nn时;不会将nn参考保存到head,它将只保留在curcan中。请将其标记为答案并进行投票:感谢您发现此答案非常有用。将来,@RICKYKUMAR请将解释作为答案的一部分-解释为什么建议的解决方案应该有效。干得好。只是为了你的信息,你应该接受并投票给正确答案,投票给其他有用的答案。这期望每个人都有一个社区。阅读此meta.stackexchange.com/a/5235
if(head==null){
    head = nn;
}