将元素插入到已排序的链表中
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){
我正在创建一个函数,它以正确的顺序将一个元素插入到一个链表中,而不需要求助于链表。这是我的代码:
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){