我真的把节点搞糊涂了,每个节点都有一个item数据类型和一个名为next的节点数据类型。当我们有3个节点时,我们想删除ex,Nodes x,y,z的中间节点。使用x.next=y、y.next=z和z.next=null。这段代码是做什么的?
Node y=x.next;
x.next=y.next;我知道它会删除一个节点,但是如何删除呢?在我看来,Node y=x.next制作了y.next=y,但是我们如何删除它呢?因为对于任何答案,x.next=y.next都应该提前显示y节点again.Thanks!
发布于 2017-11-06 20:08:41
将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中找到它,因此你可以说它已经从列表中删除了。
发布于 2017-11-06 20:08:14
考虑X-> Y ->Z,因此X.next指向Y。Y.next指向Z
因此,如果我们设置
X.next=Y.next,
Y.next=null因为Y.next是Z,所以列表如下,列表如下。X->Z,并且没有指向节点Y的点。
因此,Y不再是列表的一部分,也不再指向列表中的任何节点。
https://stackoverflow.com/questions/47136514
复制相似问题