链表添加方法未按预期工作

Linked list add method not working as expected

所以我正在尝试解决一个涉及将对象添加到链表的问题。我从早上开始就一直在处理这个问题,到目前为止我还没有得到确切的输出。

我的程序基本上是根据 severityarrival 这两个标准将患者添加到链表中。 我想使用 severity 从最高到最低添加患者。如果它们确实具有相同的严重性,那么我想根据到达的升序存储它们。例如,

Patient 1, arrival 2, severity 3

Patient 2, arrival 3, severity 3

或者如果他们有不同的严重性,那么像这样:

Patient 1, arrival 2, severity 2

Patient 2, arrival 1, severity 1

总之severity必须按降序排列,如果严重程度相同则按arrival升序存储。

到目前为止我试过的是这个,这个方法在patient class:

public boolean compareSeverity(Patient other) {
 boolean result = false;
 if(other.severity > severity) {
  result = true;
 } else if(other.severity == severity) {
    if(other.arrival > arrival) {
     result = true;
    } else {
      result = false;
    }
  } else {
    result = false;
  }
  return result;
 }

这就是我为 linked list class.

编写 add 方法的方式
public void add(String name, int severity) {
 lastArrival++;
 Patient patient = new Patient(name, lastArrival, severity);
 PatientNode current, previous;
 current = head;
 previous = null;
 if(head == null) {
  head = current = new PatientNode(patient, head);
  size++;
 } else {
   while(current!=null) {
    //previous = current;
    if(current.data.compareSeverity(patient)) {
     PatientNode n = new PatientNode(patient,current);
     size++;
     if(previous!=null) {
      previous.next = n;
      }
      return;
     }
     previous = current;
     current = current.next;
    }
  }
 }

然而,当我尝试 运行 我的程序时,它只显示一名患者。

我从早上开始就一直在修改我的方法,这就是我到目前为止所得到的。也许我需要一双新眼睛,因为现在我对这个问题无处可去。任何帮助将不胜感激。 The output that i am getting

编辑 2

列表正在完全打印出来,但它没有执行如果严重程度相同则按升序存储患者的标准。

New Output

你设置了从previous到n的指针,但是你从来没有设置从n到next的指针。您只是在链表中创建所需的两个链接之一。

if(current.data.compareSeverity(patient)) {
    PatientNode nextHolder = current.next;
    PatientNode n = new PatientNode(patient,current);
    size++;
    n.next = current;   //this line forgotten??
    if(previous==null) {
        head = n;
    }
    else {
        previous.next = n;
    }
    return;
}


previous = current;
current = current.next;

你还需要处理新专利在列表中排在第一位的情况,需要更新head变量。