gpt4 book ai didi

java - Java中linkedList实现的删除方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:53 25 4
gpt4 key购买 nike

我从关于从 linkedList 中删除元素的讲座中得到了这个方法。在specified index 。我理解该方法是如何工作的,但我不明白为什么 for-loop离开current node pointer所需索引之前的两个索引。

方法如下:

public void remove(int index) {
if (index == 0) {
// removing the first element must be handled specially
front = front.next;
} else {
// removing some element further down in the list;
// traverse to the node before the one we want to remove
ListNode current = front;
for (int i = 0; i < index - 1; i++) {
current = current.next;
}

// change its next pointer to skip past the offending node
current.next = current.next.next;
}
}

for-loop来自0 to < index-1 ,虽然我认为它应该从 0 to < index 开始。这样,指针就指向1 index之前index需要删除。不过,上述方法效果很好。

例如:在下面LinkedList enter image description here

让我们考虑删除 Node C 。通过上述循环构造,current pointer将指向Node Acurrent.next将是Node Bcurrent.next.next将是Node C 。做current.next=current.next.next将导致Node B删除而不是Node C .

我觉得我的理解有问题,有人可以解释一下吗?

最佳答案

The for-loop goes from 0 to < index-1

在您的示例中,删除 C表示索引为2 。所以i只转到0 ,自 1不是< 1 .

currentA 开始,for循环一次并 current转到B

currentB ,所以current.next.nextD ,这有效地删除了 C .

关于java - Java中linkedList实现的删除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com