【问题标题】:how to recurse over singly linked list with a function that takes no parameters如何使用不带参数的函数递归单链表
【发布时间】:2017-11-15 12:45:05
【问题描述】:

我正在尝试递归循环一个单链表,但我必须使用一个不带参数的函数,我有点困惑如何做到这一点。我的想法是,我会继续将修改后的列表传递给函数,但这不是问题所要求的。这是问题:

假设您有一个不带标题的单链整数列表,具有以下类定义:

class IntList {
    int value;
    IntList next;
}

编写一个递归的、拥有的方法l.sumOfList()

  1. 将列表中每个节点的值破坏性地替换为从该点开始的列表值的总和。
  2. 应该返回原始列表中值的总和。例如,如果 l 最初是列表 [3,2,1],而您调用 l.sumOfList(),那么 l 将成为列表 [6=(3+2+1), 3(=2+1), 1]

我只是不确定如何编写一个没有 参数?或者如何使用没有标题的链表。

【问题讨论】:

  • 哇...这是一个措辞不佳且毫无意义的任务。节哀顺变。这是我的解释。假设一个列表是神奇地创建的,它只是一组挂在空间中的节点,没有标题(在真正的 Java 中,这会被垃圾收集)。您引用了一个任意节点,即作业中提到的l。您必须编写一个方法,它将成为IntList 的成员,用所有后续节点的总和覆盖l 和所有后续节点中的值。递归的结束条件为next==null
  • @JimGarrison 谢谢,这有助于澄清一些事情!
  • 也就是说,根据help centerHow to Ask 中的站点指南,该问题是题外话。尝试编写代码(IntList 中的 sumOfList 方法)并使用它。当你有一些代码和一个特定的问题时,回来并edit你的帖子显示你做了什么。

标签: java recursion linked-list


【解决方案1】:

您可以保留一个类变量并在递归函数中使用它。类似的东西;

class TraverseInt {
IntList node = start; // start of the linked list

public void traverse() {
    if(node == null)
        return;
    System.out.println(node.value);
    node = node.next;
    traverse();
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-06
    • 2014-01-15
    • 2021-03-07
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多