在Java中创建已排序的链接列表

时间:2014-06-18 02:51:12

标签: java sorting linked-list

所以我应该按字母顺序对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;
}

1 个答案:

答案 0 :(得分:0)

找到最大的链接后,删除LinkedList的head(removeFront)链接。这是不正确的,因为头部的链接不一定是最大的链接。你需要删除的是最大的链接。