泛型元素数组的递归构造函数

时间:2019-04-21 20:51:07

标签: java recursion constructor

我有这样的建议,我必须在Java中实现单个链接列表类,但是,它必须完全通过递归函数(甚至构造函数)来实现。

由老师提供的项目中给出的构造函数会收到n个具有3点符号(T ...元素)的通用元素的数组,并且在挠了一下头之后(我从未做过递归构造函数) )我想出了一些显然不起作用的东西:

public SingleLinkedListImpl(T ... elements) {
    if(elements.length<=1){
        header = new Node<T>(elements[0]);
    } else {
        addLast(elements[0]);
        elements=Arrays.copyOfRange(elements, 1, elements.length-1);
        this(elements);
    }
}

当前正在使用的IDE即时通讯说无法完成,因为如果我用此引用构造函数,则在构造函数本身内部,它必须是函数中的第一条语句。

如何处理此问题?

顺便说一句:我不能使用Collections API中的任何内容

1 个答案:

答案 0 :(得分:3)

“递归构造函数”不等于调用this(),而是调用new SingleLinkedListImpl()

此外,this 头,而不是具有头。

假设您的班级有nextvalue字段,以伪代码显示:

  • 如果数组为空,则抛出IllegalArgumentException
  • value设置为数组的第一个元素
  • 如果数组中有1个以上元素,请将next的值设置为new SingleLinkedListImpl(<elements 1 to n>)

要调用它:

SingleLinkedListImpl<Integer> head = new SingleLinkedListImpl<>(3, 1, 4, 1, 5); // for example
相关问题