【问题标题】:Recursively adding node to end of linkedlist递归地将节点添加到链表的末尾
【发布时间】:2013-11-13 08:25:15
【问题描述】:

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

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

【问题讨论】:

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

标签: java recursion nodes singly-linked-list


【解决方案1】:

你必须做这样的事情。 说明请参考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;
}

【讨论】:

    【解决方案2】:
    private void addLast(Node node){
    
       while(root.next != null){
                root = root.next;
    
                if (root.next == null){
                    root.next = node;
                    break;
                }
        }
    }
    

    不递归,因为你不需要它......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      相关资源
      最近更新 更多