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;
}
}
这是有序链接列表的插入方法,最小的整数位于开头。直到我尝试插入比我初次添加的值更大的值,此方法才能正常工作。当我尝试添加一个新的更大的值时,它给出了一个空指针异常,这是它唯一的一次。当我检查它时,我觉得我的逻辑似乎很好,有人有任何想法吗?
答案 0 :(得分:1)
您应该更改内部条件的顺序
while(data > current.data && current != null)
应该是
while(current != null && data > current.data)
这是因为Java &&
运算符从左开始进行检查,因此无论current
是否为null,它都会尝试在此调用data