java - 如何在Java中对链表进行就地排序以按升序添加包含整数的对象?
问题描述
我有一个链接列表,其中包含学生类型的对象,名称(字符串)和 ID(整数)。我有一个 insertInOrder 方法。如果我只使用这种方法,所有对象都按顺序添加...1、2、3、4 等,但是如果我想将另一个对象添加到未按顺序创建的链表中,我需要解决。有人可以告诉我如何解决这个问题吗?
因此,如果有 ID 为 8、5、9、3 的学生并使用此方法,则我的链表已排序。但是如果使用 insert_to_front 或 insert_to_end 之类的方法,然后想要添加 ID 为 7 的学生,则应该在添加之前对链表进行排序......对吗?
public void insertInOrder(Student s) {
if (head == null) {
head = s;
} else if (s.getId() == head.getId()) {
return;
} else if (s.getId() < head.getId()) {
insertToFrontofList(s);
} else {
Student c2 = head;
Student c1 = head;
while (c2.getNext() != null) {
c1 = c2;
c2 = c2.getNext();
if (s.getId() < c2.getId()) {
c1.setNext(s);
s.setNext(c2);
return;
} else if (s.getId() == c2.getId()) {
return;
}
}
insertToEnd(s);
}
}