有序鏈表所以我應該排序字母順序在Java中鏈表(節點是字符串)。我不能使用集合,所以我必須製作自己的鏈接列表和排序算法。我創建了一個方法,可以找到工作中鏈接列表中最大(或最遠的字母)字。現在我試圖通過鏈接列表進行排序,找到最大的元素並將其插入到新的鏈接列表中。然後它刪除最大的,並執行相同的操作,直到鏈接列表爲空。當我運行它時,結束了一個空白列表,我的代碼出了什麼問題?返回最大元素使用Java創建
public Link isLargest(){
Link large = first;
Link temp = null;
Link current = first;
Link after = current.next;
while (after != null){
if (large.lastName.compareTo(after.lastName) < 0){
large = after;
}
temp = current;
current = temp.next;
after = current.next;
}
return large;
}
要刪除
代碼,我設置了最大的元素,以德前面,然後將其刪除。
private static LinkedList linkSort(LinkedList unsorted){
LinkedList sorted = new LinkedList();
while (!(unsorted.isEmpty())){
Link large = unsorted.isLargest();
sorted.insert(large.name, large.lastName);
first = large;
unsorted.removeFront();
}
return sorted;
}
僅供參考,在Java中存在的方法命名約定,使得任何所謂的'isFoo()'返回一個布爾值。如果你想實際得到一個值,你會想命名你的方法'getFoo()'或'findFoo()'或類似的東西,以避免混淆。 – azurefrog
關於你的問題,你的'linkSort()'方法看起來應該是將內容添加到'sorted'中,所以我猜想你傳入的未排序列表是空的,或者你的'isEmpty )'方法。你是否試過在調試器中逐步調試'linkSort()',或者至少放入一些日誌語句來確保你的while循環被執行? – azurefrog
我有點困惑......你需要**創建一個有序的'List' **(如在你的問題的標題中,在這種情況下,你只需要重寫'add()'方法任何典型的'LinkedList'),或者你需要**實際排序**一些'List'? – ccjmne