在java的LinkedList中,是否可以使用递归的方法来实现元素的计数?

wd2eg0qa  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(119)

这个问题和我的标题一样。我现在正在研究数据结构,并与这个问题作斗争。LinkedIn列表现在有一个假头,不可能再做一个全局变量。

public int numItems() {
 just here is the all I can modify.
}

我认为要用递归来解决这个问题,必须要有一个参数,但是由于我是一个Noob程序员,我不确定我的观点。
我尝试了第一个不带参数的方法,它调用了另一个带参数的方法,如

public int numItems() { 
 return numItems(head);
}

public int numItmes(Node node) {
 if(node.next == null) {
  return 0;
 } else {
  return 1 + numItems(node.next); 
 }
}

使用Java的方法重载。但这也不是这个问题的正确答案。所以,如果你有任何想法,可以编码计数的元素在LinkedIn列表中使用递归,请让我知道...或者如果这是不可能的,也请告诉我,这是不可能的。

z9smfwbn

z9smfwbn1#

您可以从第一个实际节点开始,而不是从“假设的”头开始,递归地计算链表中的元素数。
您的最终结果应该如下所示:

public int numItems() {
    return numItems(head.next); // start at the first actual node
}

private int numItems(Node node) {
    if (node == null) {
        return 0;
    }
    return 1 + numItems(node.next);
}

相关问题