猿问

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

此方法允许删除线性列表中的所有底片。我将if循环标记为100%我不理解。因此,此方法遍历整个列表。其余代码完全有意义。但是我唯一的问题是为什么会head = n.next在何时prev == null?这是因为现在有两个“空格”并且不允许这样做吗?(两个空格,因为prev = null和n必须也为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;

        }

    }


翻阅古今
浏览 148回答 1
1回答

慕沐林林

首先if不是循环,而是用于条件分支的语句。因此,从开始if (n.val < 0),您检查当前元素是否小于零,如果是,则检查当前元素之前的元素是否为null。如果是,则意味着您当前的元素是列表的开头,并且它的值小于零,因此您希望将其删除。因此,您只需要使列表的开头成为当前标题之后的元素即可。因此,目的if (prev == null){是检查当前元素(小于零)是否在列表的开头,以便您知道如何删除它。继续,如果当前元素不是列表的开头,您将只说前一个元素(相对于当前元素)之后的元素是当前元素之后的元素,因此列表中的零元素不再为零。 。
随时随地看视频慕课网APP

相关分类

Java
我要回答