我有这样的建议,我必须在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中的任何内容
答案 0 :(得分:3)
“递归构造函数”不等于调用this()
,而是调用new SingleLinkedListImpl()
。
此外,this
是头,而不是具有头。
假设您的班级有next
和value
字段,以伪代码显示:
IllegalArgumentException
value
设置为数组的第一个元素next
的值设置为new SingleLinkedListImpl(<elements 1 to n>)
要调用它:
SingleLinkedListImpl<Integer> head = new SingleLinkedListImpl<>(3, 1, 4, 1, 5); // for example