【问题标题】:LinkedList: What to substitute for node on the last node?LinkedList:用什么代替最后一个节点上的节点?
【发布时间】:2017-02-07 21:05:28
【问题描述】:

这是我的构造函数在我的LinkedNode 类中的样子:

int info;
LinkedNode next;

public LinkedNode(int info, LinkedNode next) { 
    this.info = info;
    this.next = next;
}

在我的Test(主)类中,当我尝试这样创建节点时:

LinkedNode d = new LinkedNode(40, null);
LinkedNode c = new LinkedNode(30, d);
LinkedNode b = new LinkedNode(20, c);
LinkedNode a = new LinkedNode(10, new LinkedNode(20, LinkedNode(30, LinkedNode(40, null))));

,然后我得到一个编译器错误告诉我

方法 LinkedNode(int, null) 未定义 Test 类型

这是真的,因为我的构造函数的第二个参数是 LinkedNode 类型,但是我如何表示最后一个节点的 next 是空的?

【问题讨论】:

  • 看起来您缺少“新”关键字
  • 具体在哪里??
  • d、c 和 b LinkedNode 未与 a 链接。你不应该这样做:LinkedNode a = new LinkedNode(10, b)
  • 啊!谢谢,我明白了,我错过了两次,所以我认为它与“null”关键字无关,对吧?
  • 每次你想创建一个新的链接节点时,你都需要使用 new 关键字调用构造函数。在您的最后一行代码中,您似乎打算传入链接节点的新实例,但实际上您正在调用一个不存在的方法。因此错误

标签: java constructor linked-list null nodes


【解决方案1】:

以下代码在语法上是正确的(new 关键字缺失,正如 chatton 所说)

LinkedNode a = new LinkedNode(10, 
    new LinkedNode(20, 
        new LinkedNode(30, 
            new LinkedNode(40, null))));

但也许你的意思是

LinkedNode a2 = new LinkedNode(10, b);

改为?

【讨论】:

  • 是的,我确实使用了您在第二个代码中的内容,但只是想尝试一种不同的递归方式来解决它。我现在唯一的问题是我假设“null”是 LinkedNode 类型(或任何节点),在我的情况下可以作为第二个参数,对吗?
  • 是的,将 null 作为第二个参数完全没问题。
【解决方案2】:
LinkedNode d = new LinkedNode(40, null);
LinkedNode c = new LinkedNode(30, d);
LinkedNode b = new LinkedNode(20, c);
LinkedNode a = new LinkedNode(10, new LinkedNode(20, new LinkedNode(30, new LinkedNode(40, null))));

You can also use this tutorial

【讨论】:

    【解决方案3】:

    我尝试使用您的代码,但添加新关键字时它可以工作。

    LinkedNode c = new LinkedNode(10, new LinkedNode(20, new LinkedNode(30, new LinkedNode(40, null))));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      相关资源
      最近更新 更多