Java 递归地将节点添加到linkedlist的末尾

Java 递归地将节点添加到linkedlist的末尾,java,recursion,nodes,singly-linked-list,Java,Recursion,Nodes,Singly Linked List,我试图递归地将一个元素附加到链表的末尾。但是,似乎没有添加任何内容。我使用私有助手方法,因此可以将引用用作参数。我没有遇到任何异常,但是,我的测试用例显示列表中根本没有添加任何内容!我不知道我做错了什么,也不知道从哪里开始。非常感谢你的帮助 public void addLast(E element) { addLast(element,first); } private void addLast(E element, Node ref) { if (ref == null)

我试图递归地将一个元素附加到链表的末尾。但是,似乎没有添加任何内容。我使用私有助手方法,因此可以将引用用作参数。我没有遇到任何异常,但是,我的测试用例显示列表中根本没有添加任何内容!我不知道我做错了什么,也不知道从哪里开始。非常感谢你的帮助

public void addLast(E element) {
    addLast(element,first);
}

private void addLast(E element, Node ref) {
    if (ref == null) {
        ref = new Node(element);
        n++;
            } else if (ref.next == null) {
                    ref.next = new Node(element);
                    n++;
    } else {
        addLast(element, ref.next);
    }
}
不是递归的,因为你不需要它


不是递归的,因为你不需要它…

你必须这样做。 有关说明,请参阅

private Node addLast(E element, Node ref) {
    if (ref == null) {
        ref = new Node(element);

    } else {
        ref.next = addLast(element, ref.next);
    }
    return ref;
}

你必须这样做。 有关说明,请参阅

private Node addLast(E element, Node ref) {
    if (ref == null) {
        ref = new Node(element);

    } else {
        ref.next = addLast(element, ref.next);
    }
    return ref;
}

首先,什么是n?你的问题是列表总是空的吗?如果是,请尝试将第一个If块下的“ref=new Node(element)”更改为“first=new Node(element)”,其中“first”是列表的头指针。能否发布一个导致LinkedList为空的示例?首先,n是什么?你的问题是列表总是空的吗?如果是,请尝试将第一个If块下的“ref=new Node(element)”更改为“first=new Node(element)”,其中“first”是列表的头指针。您能否发布一个导致LinkedList为空的示例?