你如何构造一个JAVA递归方法Dequeue

时间:2016-02-26 05:20:54

标签: java recursion

首先,我有一个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;
}

我不能为我的生活弄清楚如何做到这一点。我唯一能改变的是评论,清楚地说明我需要编写代码的地方。

如何构建一个从头部出列但其调用方法已经引用头部的递归方法?这甚至递归怎么样?我甚至不知道应该做什么。

2 个答案:

答案 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调用它,它将使除了最后一项之外的所有项都出列。