Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中创建排序链表_Java_Sorting_Linked List - Fatal编程技术网

在Java中创建排序链表

在Java中创建排序链表,java,sorting,linked-list,Java,Sorting,Linked List,所以我应该按照字母顺序对Java中的链表进行排序(节点是字符串)。我不允许使用集合,所以我必须建立自己的链表和排序算法。我创建了一个方法,可以在链表中找到最大的(或字母表中最远的)单词。现在我尝试通过获取一个链表进行排序,找到最大的元素并将其插入到一个新的链表中。然后,它删除最大的链接,并继续执行相同的操作,直到链接列表为空。当我运行它时,我得到了一个空白列表,我的代码怎么了 返回最大元素的代码 public Link isLargest(){ Link large = first;

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

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

仅供参考,在Java中有一个方法命名约定,任何名为
isFoo()
的方法都会返回布尔值。如果您想实际获取一个值,您需要将您的方法命名为
getFoo()
,或
findFoo()
或类似的名称,以避免混淆。关于您的问题,您的
linkSort()
方法看起来应该向
sorted
添加内容,因此,我猜您要传递的未排序列表是空的,或者您的
isEmpty()
方法中存在错误。您是否尝试过在调试器中单步执行
linkSort()
,或者至少插入一些日志语句以确保执行while循环?我有点困惑。。。您是否需要创建一个排序的
列表
(如问题的标题所示,在这种情况下,您只需覆盖任何典型的
链接列表
add()
方法即可),或者您是否需要实际对一些
列表进行排序
?我需要按字母顺序对LinkedList进行排序,我正在创建一个新的排序列表,这如何解释返回的排序列表为空的原因?这应该是一个评论,因此是有用的,但它没有回答老年退休金计划的主要问题,它没有。这只是我看到的问题之一。我们需要看看insert()方法的样子。
 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;
}