我应该如何使用自定义链表实现排序?

时间:2014-11-16 11:23:45

标签: java sorting linked-list nodes polynomials

我一直在试图弄清楚链接列表是如何工作的,但我很难想象这个概念。我知道多种算法,但我无法弄清楚如何实现它们。

这是我的代码:

public class LL {
    private ListNode front,last; 

    public LL(){
        front = null; last = null;
    }

    //
    //methods here...
    //

    public class ListNode{
        public double coefficient;
        public int exponent;
        public ListNode next;

        public ListNode(){
            this(0, 0, null);
        }

        public ListNode(double coefficient, int exponent, ListNode next){
            this.coefficient = coefficient; 
            this.exponent = exponent;
            this.next = next;
        }
    } 
}

这用于存储多项式的数据。我试图让它们按降序排列。并最终将具有相同指数的节点系数相加。

我想我要采用冒泡排序算法,但我无法弄清楚如何重新排列链接。我还在考虑添加一个remove()方法,只删除一个节点并在最后添加它,直到它被排序。但这是非常低效的,因为我每次都必须继续制作新的节点。

PS:我还有一个Polynomial类,它接受一个字符串并将其转换为LL。我不认为有必要发布它,但如果你需要它我会发布它! 谢谢!

1 个答案:

答案 0 :(得分:1)

对链表进行排序效率非常低,通常你会将列表清单复制到一个数组中,对它们进行排序并将它们复制回来(这就是JDK所做的)

BTW除非你有非常稀疏的内容,否则最好使用数组或数组列表。这不仅更简单,更高效,更快速,而且还可以自然分类。

即使你有很多零系数,数组也会使用一小部分内存和一个链表。

相关问题