所以我应该按字母顺序对Java中的链表进行排序(节点是字符串)。我不允许使用集合,所以我必须编制自己的链表和排序算法。我创建了一个方法,可以找到链接列表中最大(或最下面的字母表)单词。现在我尝试通过获取链接List进行排序,找到最大的元素并将其插入到新的链表中。然后它删除最大值并继续执行相同操作,直到链接列表为空。当我运行它时,我最终得到一个空白列表,我的代码出了什么问题?
返回最大元素的代码
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;
}
要删除,我将最大的元素设置为teh front然后将其删除。
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;
}
答案 0 :(得分:0)
找到最大的链接后,删除LinkedList的head(removeFront)链接。这是不正确的,因为头部的链接不一定是最大的链接。你需要删除的是最大的链接。