Java 双链表双排序与非排序加法问题

Java 双链表双排序与非排序加法问题,java,linked-list,doubly-linked-list,Java,Linked List,Doubly Linked List,所以,我已经搜索了一个多星期,还没有找到解决我问题的方法。我的教授帮了我一点忙,但我就是不知道如何按顺序添加节点 我应该做的是: 编写一个add方法,将节点按未排序的顺序(当用户输入节点时(假设))并按从最小到最大的升序添加到列表中 我的问题:我可以按未排序的顺序添加节点,但是我不明白为什么不能创建未排序的节点。很明显,我遗漏了一些东西,在我看过的所有示例中,没有一个是我应该做的,而且很难遵循那些只按顺序做的,因为它们使用所有这些类/接口或我认为不应该使用的任何东西,或者我不明白如何使用它们 链

所以,我已经搜索了一个多星期,还没有找到解决我问题的方法。我的教授帮了我一点忙,但我就是不知道如何按顺序添加节点

我应该做的是:

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

我的问题:我可以按未排序的顺序添加节点,但是我不明白为什么不能创建未排序的节点。很明显,我遗漏了一些东西,在我看过的所有示例中,没有一个是我应该做的,而且很难遵循那些只按顺序做的,因为它们使用所有这些类/接口或我认为不应该使用的任何东西,或者我不明白如何使用它们

链表节点具有下一个、上一个、下一个排序、上一个排序和数据

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++;
}
这是节点类


我只是在寻找我可能做错了什么的线索,比如,当涉及到排序时,我的连接是否混乱,或者我是否在做一些奇怪的事情。即使是带有简单解释的链接也会有帮助,因为我不擅长词汇/行话。

链接太多了!首先搜索(仅搜索)已排序列表,直到找到要插入新节点的位置,然后将其链接。另外,请确保您正确处理了新节点应位于当前头部之前或当前尾部之后的情况。我不理解您的问题,您的意思是您必须使用2个
add
方法?一个按排序顺序添加节点,另一个按未排序顺序添加节点?链接太多了!首先搜索(仅搜索)已排序列表,直到找到要插入新节点的位置,然后将其链接。另外,请确保您正确处理了新节点应位于当前头部之前或当前尾部之后的情况。我不理解您的问题,您的意思是您必须使用2个
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;
        }
}