0
我正在实现一个抽象类,并实现了插入排序列表的insert
方法。这是递归的方法我到目前为止:java - 排序列表递归插入方法
public void insert(E data) {
Node<E> temp = head;
insert(temp, data);
}
private void insert(Node<E> curr, E data){
Node<E> temp = new Node<E>(data);
if (head == null || data.compareTo(head.data) < 0) {
temp.next = head;
head = temp;
}
else if(curr.data.compareTo(data) < 0 && (curr.next == null || curr.next.data.compareTo(data) > 0)){
temp.next = curr.next;
curr.next = temp;
return;
}
else{
insert(curr.next, data);
}
}
但是,任何时候我尝试插入2+物品进入名单,我得到一个空指针异常错误。有人能解释我的错误吗?这是当我尝试运行它简单地插入1和2会发生什么:https://gyazo.com/d254d563675b9d1b0efbce443eda4445
我该如何处理? – witcheR
一个简单的方法是启动else if(curr.data!= null && curr.next!= null)。 if条件一旦为空并且一直到最后的else都将是假的。但这不是根本问题。根本问题是你试图管理一些可以通过其他方式更好地处理的事情的方法,例如追加到列表然后使其具有唯一性。 –
'else if(curr.data.compareTo(data)<0 &&(curr.next == null || curr.next.data.compareTo(data)> 0)'可能可以解决问题,就像else中一样if块要添加数据iff curr> data> curr.next和curr.next = null意味着数据是最小的元素 – merterpam