递归地将节点添加到链接列表的末尾

时间:2013-11-02 03:10:01

标签: java recursion nodes singly-linked-list

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

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);
    }
}

2 个答案:

答案 0 :(得分:6)

你必须做这样的事情。 有关说明,请参阅this link

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

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

答案 1 :(得分:1)

private void addLast(Node node){

   while(root.next != null){
            root = root.next;

            if (root.next == null){
                root.next = node;
                break;
            }
    }
}

因为你不需要它而不是递归的......