コードを実行するとストックオーバーフローエラーが発生しますが、問題が何であるかわかりません。誰かが私がこれを理解するのを手伝ってもらえますか?
これが私にエラーを与えているメソッドです。ノードの挿入を再帰的に行った方法と関係があると確信していますが、何を間違えたのかわかりません。
このメソッドの目的は、ノードのリンク内の正しい場所を見つけて、そこに新しいアイテムを挿入することです。ノードは昇順の値を維持する必要があります。それが目的をもう少しよく説明するのに役立つことを願っています。ありがとう。
public class OrderedList< T extends Comparable<T> > {
private ListNode<T> firstNode;
private ListNode<T> lastNode;
private String name; // the name is used in printing
// constructor creates an empty ordered list with "ordered list" as the name
public OrderedList() {
this( "ordered list" );
}
// constructor creates an empty ordered list with a name
public OrderedList( String listName ) {
name = listName;
firstNode = lastNode = null;
}
// insert an item into the right position of the ordered list
public void insert( T insertItem ) {
if (isEmpty()) {
firstNode = lastNode = new ListNode<T>(insertItem);
}else {
if (insertItem.compareTo(firstNode.getData()) <= 0) {
firstNode = new ListNode<T>(insertItem, firstNode);
}else {
if (firstNode.equals(lastNode)) {
lastNode = new ListNode<T>(insertItem);
}else {
T store = firstNode.getData();
firstNode = firstNode.getNext();
insert(insertItem);
firstNode.setNext(firstNode);
firstNode.setData(store);
}
}
}
}
public boolean isEmpty() {
return firstNode == null;
}
}