双链表双重排序和未排序添加方法问题

时间:2019-03-06 01:06:32

标签: java linked-list doubly-linked-list

因此,我已经进行了整整一周的搜索,但未能找到解决我问题的方法。我的教授提供了一些帮助,但我只是想不出如何按排序顺序添加节点。

我该怎么做:

编写一个add方法,该方法将节点按未排序的顺序添加到列表中(当用户输入时(假设)),并且按从小到大的顺序递增。

我的问题:我可以按未排序的顺序添加节点,但是我不明白为什么无法创建未排序的节点。我显然遗漏了一些东西,在我看过的所有示例中,没有一个正在执行我应该做的事情,而遵循仅执行排序顺序的示例太困难了,因为它们使用了所有这些类/ interfaces或我不应该使用的任何东西,或者我不知道如何使用它们的东西。

链接列表节点具有next,previous,nextSorted,previousSorted和数据。

public void add(T t) {
    Node node = new Node(t, null, null, null, null);
    tail.prev.next=node;
    node.next=tail;
    tail.prev=node;         

    if(size==0) {
        node.nextSort=tail;
        head.nextSort=node;
        node.prevSort=head;
        tail.prevSort=node;

    }else{
        Node curr = head.nextSort;
        while(curr!=null) {
        if(t.compareTo(curr.data)<0) {
            node.nextSort=curr;
            curr.prevSort.nextSort=node;
            node.prevSort=curr.prevSort;
            curr.prevSort=node;
        }

    }
    size++;
}

这是我的add方法,前几行可以按预期工作,但其余的行,我真的不知道如何处理其余的行。在这一点上,我感到非常困惑和沮丧,因为似乎没有任何效果。

/**
* This is the doubly-linked list node.
*/
private class Node
{
        private T data;
        private Node prev;
        private Node next;
        private Node prevSort;
        private Node nextSort;

        /**
         * Constructs basic list node.
         *
         * @param d The data element held by the list node.
         * @param p A Node that occurs immediately before this in list order.
         * @param n A node that occurs immediately after this in list order.
         */
        private Node(T d, Node p, Node n, Node ps, Node ns)
        {
            data = d;
            prev = p;
            next = n;
            prevSort = ps;
            nextSort = ns;
        }
}

这是节点类。

我只是在寻找有关我可能做错了什么的线索,例如,在排序时我的连接是否混乱,或者我做的事情很奇怪。甚至连简单说明的链接也会有用,因为我不太擅长词汇/行话。

0 个答案:

没有答案