gpt4 book ai didi

java - 有人可以解释这个 if 循环的删除线性列表中负数的方法吗?

转载 作者:行者123 更新时间:2023-12-02 11:02:15 24 4
gpt4 key购买 nike

此方法允许删除线性列表中的所有底片。我标记了我 100% 不理解的 if 循环。所以这个方法会遍历整个列表。代码的其余部分完全有意义。但我遇到的唯一问题是为什么当 prev == null 时是 head = n.next ?这是因为现在有两个“空格”而不允许吗? (两个空格,因为 prev = nulln 也必须为 null,因为它在 if 循环中跳转为负数)

ListNode prev = null;
ListNode n = head;
while (n != null) {
if (n.val < 0) {
if (prev == null) { //this if- loop i don´t understand
head = n.next;
}
else {
prev.next = n.next;
}
}
else {
prev=n;
n = n.next;
}
}

最佳答案

首先if不是循环,它是用于条件分支的语句。

所以,从 if (n.val < 0) 开始,检查当前元素是否小于零,如果是则检查当前元素之前的元素是否为 null 。如果是,则意味着当前元素是列表的头部,并且它的值小于零,因此您想要删除它。所以你要做的只是让列表的头部成为当前头部之后的元素。

那么if (prev == null){的目的是检查当前元素(小于零)是否是列表的头部,这样你就可以知道如何删除它。

继续,如果当前元素不是列表的头部,则可以说前一个元素(相对于当前元素)之后的元素是当前元素之后的元素,因此小于零的元素不再是在列表中。

关于java - 有人可以解释这个 if 循环的删除线性列表中负数的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51243585/

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