-4
我得到一個股票溢出錯誤,當我運行我的代碼,我不知道是什麼問題。有人能幫我解決這個問題嗎?爪哇 - 創建一個訂單鏈接列表,不知道我是如何得到無限遞歸
這是給我的錯誤的方法。我非常肯定它與我以遞歸方式插入節點的方式有關,但我不知道我做錯了什麼。
這種方法的目的是爲了找到節點的鏈路中的正確位置,並插入新項目出現。節點需要保持升值。我希望這有助於更好地解釋目的。謝謝。
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;
}
}
幾乎遷移到元LOL – Starx 2012-04-27 22:05:18
您還沒有給予足夠的信息,以確定爲什麼它不會繼續調用'插入()'不會觸發任何退出條件。即什麼是'isEmpty()',什麼是'firstNode'。 – 2012-04-27 22:06:56
我沒有看到一個基本情況,它不會a)失去整個列表的跟蹤或b)有效地使用第一個/最後一個引用。人們會認爲,如果你有最後一個引用,那麼'insert()'只能應用*那裏* ...我不會downvote這個問題,雖然;您應該嘗試並嘗試解決問題,幷包括您嘗試解決問題的方法。 – Makoto 2012-04-27 22:09:32