【问题标题】:Basic knowledge about Nodes with JavaJava节点基础知识
【发布时间】:2017-11-06 11:57:01
【问题描述】:

我对 Node 感到非常困惑,每个 Node 都有一个 item 数据类型和一个名为 next 的 Node 数据类型。当我们有 3 个节点并且我们想要删除 exNodes xyz 的中间节点时。使用x.next=yy.next=zz.next=null。这段代码有什么作用?

Node y=x.next;
x.next=y.next;

我知道它会删除一个节点,但是怎么做呢?在我看来,Node y=x.next 生成了y.next=y,但是我们如何删除它呢?因为x.next=y.next 应该再次显示y 节点。提前感谢您的任何回答!

【问题讨论】:

  • 为什么Node y=x.next 会变成y.next=y
  • 我知道我不正确,我想要一个解释,这就是我的想法,因为 x.next 显示 y ,所以当我们输入 y=x.next 时,我们给 y自己的价值(?)。这真的是我的问题

标签: java data-structures nodes


【解决方案1】:

next 属性视为一种指针(尽管Java 中的实际术语是引用)。

让我们将每个节点视为一个框,其中包含指向另一个框的next 引用。

初始情况是:

-------           -------            -------
| x   |           | y   |            | z   |
|  next---------> | next------------>| next----> null
------+           ------+            ------+

现在,当你写 x.next=y.next 时,你会得到:

-------           -------            -------
| x   |           | y   |            | z   |
|  next-----+     | next-------+---->| next----> null
------+     |     ------+      |     ------+
            +------------------+

所以节点 x 指向节点 z。节点 y 被删除,但您无法从 x 到达它,也无法从 z 到达它。因此,您可以说它已从列表中删除。

【讨论】:

    【解决方案2】:

    考虑 X-> Y ->Z, 因此 X.next 指向 Y。 Y.next 指向 Z

    因此,如果我们设置

    X.next=Y.next,
    Y.next=null
    

    列表如下,因为 Y.next 是 Z。现在列表如下。 X->Z 并没有指向节点 Y。

    因此,Y 不再是列表的一部分,也没有指向列表中的任何节点。

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 2011-06-01
      • 2014-06-19
      • 2013-03-23
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 2018-05-25
      相关资源
      最近更新 更多