首先,我有一个Queue的链表实现,其中Dequeuing发生在链表的 Head 。我有一个无争议的无回报公共方法:
public void recursiveDequeue() {
head = recursiveDequeue(size()-1, head);
}
第二种方法:
private Node recursiveDequeue(int index, Node current) {
if (current==null) {
// some code I need to write
}
return current;
}
我不能为我的生活弄清楚如何做到这一点。我唯一能改变的是评论,清楚地说明我需要编写代码的地方。
如何构建一个从头部出列但其调用方法已经引用头部的递归方法?这甚至递归怎么样?我甚至不知道应该做什么。
答案 0 :(得分:1)
可能类似以下内容。我不知道究竟与 index 有什么关系,这里似乎是多余的,但如果它是在评论中建议出列的元素数量:
private Node recursiveDequeue(int index, Node current) {
if (current==null || index==0) {
return null;
}
return recursiveDequeue(index-1,current.next); // for a single-linked list
}
答案 1 :(得分:0)
如果允许您编写的唯一代码是以node参数为null为条件的,那么就没有解决方案,因为您无法影响具有非空头的队列。
如果条件是current != null
,则可能:
if (current != null) {
if (index > 0)
return recursiveDequeue(index - 1, current.getNext());
}
return current;
这将使index
项目出列。如果你的无参数方法用size - 1
调用它,它将使除了最后一项之外的所有项都出列。