将元素插入到已排序的链表中

Inserting an element into an already sorted linked list

我正在创建一个函数,它以正确的顺序将一个元素插入到一个链表中,而不需要求助于链表。这是我的代码:

public void insert(E e) {
    if (e == null)
        throw new NullPointerException();

    if (head == null) {
        head = new Node(e, null);
        count++;
    } else {
        Node current = head;

        for (current = head; current != null ;){
            if(current.item.compareTo(e) > 0){
                Node temp = current;
                current = new Node(e, null);
                current.next = temp;
                break;
            }else{
                current = current.next;
            }
        }
    }   
}

我不确定出了什么问题,但是当我打印出来时,它只打印出第一个元素。我是否以某种方式没有链接到头节点?我想要它,所以如果它查看列表并且一旦找到比它大的项目,它就会占据那个位置并且较大的项目会被撞到下一个。链表构造函数已经在列表外创建。

当您将新元素插入列表时,不会设置前一个元素的 next 引用:

if(current.item.compareTo(e) > 0){
    Node temp = current;
    current = new Node(e, null);
    current.next = temp;
    break;
}else
    \...

因此,第一个列表元素的 next 将始终指向 null,有效地使列表除第一个元素外为空。


如果列表不为空并且每个列表元素的条件为 false,您甚至都不会尝试插入元素:

if(current.item.compareTo(e) > 0){