我正在尝试从链接列表中删除给定的节点。我不知道为什么我的代码不起作用。有什么提示吗? 所以我有 [11,21,31,41],他们要求我删除索引 2 处的节点,在本例中为 31。到目前为止,我有这个:
public void delete (int k) {
//[ 11 21 31 41 ].delete( 2 ): expected=[ 11 21 41 ]
if (k < 0 || k >= N) throw new IllegalArgumentException ();
for(Node x = first; x != null; x = x.next) {
//deletes node
if(x.item == k){
x = x.next;
}
if(x.item <= k){
x = x.next.next;
}
}
}
有人可以告诉我为什么这不起作用吗?谢谢
最佳答案
您可以使用接下来的 k 次来移动节点。存储一个临时 int 和前一个节点。每次调用 next()
时都会递减临时 int。到达 0(所需元素)后,通过将前一个节点的下一个指针设置为 x 的下一个指针来删除,然后将 x
设置为 null
。
我认为在您的代码中您缺少设置指针的部分。
例如:
(1) -> (2) -> (3)
要删除 (2)
,请设置 (1).next = (3)
和 (2) = null
。这将得到:
(1) -> (3)
关于java - 从链表中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864536/