我有这个任务,我必须在 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 说这不能完成,因为如果我用 this 引用构造函数,在构造函数本身内部它必须是函数中的第一条语句。
我该如何处理这个问题?
顺便说一句:我不能使用 Collections API 中的任何东西
最佳答案
“递归构造函数”不等同于调用 this()
,而是调用 new SingleLinkedListImpl()
.
此外,this
是头,而不是有头。
假设您的类(class)有 next
和 value
字段,伪代码:
- 如果数组为空,抛出
IllegalArgumentException
- 设置
value
到数组的第一个元素 - 如果数组中有超过1个元素,设置
next
的值至new SingleLinkedListImpl(<elements 1 to n>)
调用它:
SingleLinkedListImpl<Integer> head = new SingleLinkedListImpl<>(3, 1, 4, 1, 5); // for example
关于java - 来自泛型元素数组的递归构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55786655/