有关使用Java的节点的基本知识

时间:2017-11-06 11:57:01

标签: java data-structures nodes

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

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

我知道它会删除一个Node,但是怎么样?在我看来,Node y=x.nexty.next=y,但我们如何删除它?因为x.next=y.next应该再次显示y节点。请提前感谢任何答案!

2 个答案:

答案 0 :(得分:2)

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

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

最初的情况是:

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

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

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

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

答案 1 :(得分:0)

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

因此,如果我们设置

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

列表如下,因为Y.next是Z.现在的列表如下。 X->Z并且节点Y没有意义。

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