我对Nodes感到困惑,每个Node都有一个item
数据类型和一个名为next
的Node数据类型。如果我们有3个节点,并且我们要删除ex
,Nodes x
,y
,z
的中间节点。使用x.next=y
,y.next=z
和z.next=null
。这段代码有什么作用?
Node y=x.next;
x.next=y.next;
我知道它会删除一个Node,但是怎么样?在我看来,Node y=x.next
会y.next=y
,但我们如何删除它?因为x.next=y.next
应该再次显示y
节点。请提前感谢任何答案!
答案 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不再是列表的一部分,也不指向列表中的任何节点。