これはそれほど複雑ではないことはわかっていますが、何らかの理由で理解できません。
二重にリンクされたリストに要素を挿入し、すべてを並べ替えようとしています。これに似たいくつかの異なる質問を調べましたが、どれもまったく同じではないようです。
簡単に言えば、二重にリンクされたリストがある場合: 3 <-> 4 <-> 5 <-> 7 <-> 8
insertMid(6): 3 <-> 4 <-> 5 <-> 6 <-> 7 <-> 8
public void insert(IndexRecord newRec){
Node newNode = new Node(newRec);
Node curNode = front;
if (isEmpty()){ //Empty list
front = newNode;
}else if (front.getNext() == null){ //One element in list
newNode.setPrev(front);
front.setNext(newNode);
back = newNode;
back.setPrev(front);
}else if (back.compareTo(newNode) < 0){ //New node is greater than back
back.setNext(newNode);
newNode.setPrev(back);
back.getPrev().setNext(newNode);
back = newNode;
}else{ //New node is in between two others
while (curNode != null){
if (newNode.compareTo(curNode) < 0){
curNode = curNode.getNext();
}else{
break;
}
}
newNode.setNext(curNode);
newNode.setPrev(curNode.getPrev());
curNode.getPrev().setNext(newNode);
curNode.setPrev(newNode);
}
}
curNode.getNext().setPrev(newNode()); という行に NPE が表示されるだけです。しかし、while ループ条件でそれを確認すると、どのように発生するのでしょうか?