尝试插入最大值时,有序链表会提供空指针

时间:2018-12-02 01:25:03

标签: java

 public void insert(int data)
        {
            Node newNode = new Node(data);
            Node current = head;
            Node prev = null;

            if(head == null)
            {
                head = newNode;
            }
            else
            {   
                while(data > current.data && current != null)
                {
                    prev = current;
                    current = current.next;
                }

                if(prev == null)
                {
                    newNode.next = current;
                    head = newNode;
                }
                else
                {
                    prev.next = newNode;
                    newNode.next = current;
                }
            }

这是有序链接列表的插入方法,最小的整数位于开头。直到我尝试插入比我初次添加的值更大的值,此方法才能正常工作。当我尝试添加一个新的更大的值时,它给出了一个空指针异常,这是它唯一的一次。当我检查它时,我觉得我的逻辑似乎很好,有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

您应该更改内部条件的顺序

while(data > current.data && current != null)

应该是

while(current != null && data > current.data)

这是因为Java &&运算符从左开始进行检查,因此无论current是否为null,它都会尝试在此调用data