所以我试图解决一个涉及将对象添加到链表的问题。我从早上起就遇到过这个问题,到目前为止我还没有得到确切的输出。
我的计划基本上是根据两个标准severity
和arrival
将患者添加到链接列表中。
我想使用severity
将患者从最高到最低添加。如果它们具有相同的严重性,那么我想根据到达按升序存储它们。例如,
患者1,到达2,严重程度3
患者2,到达3,严重程度3
或者如果他们有不同的严重性,那么就像这样:
患者1,到达2,严重程度2
患者2,到达1,严重程度1
简而言之severity
必须按降序排列,如果严重程度相同,则根据arrival
按升序存储它们。
到目前为止我所尝试的是,此方法位于patient
类:
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;
}
这就是我为add
类编写linked list
方法的方式。
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
列表完全打印出来,但是如果严重程度相同则不执行标准,然后按升序存储患者。
答案 0 :(得分:0)
您可以将指针从前一个设置为n,但是您从不将指针从n设置为下一个。您只需在链接列表中创建所需的两个链接之一。
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;
您还需要处理新专利在列表中的第一个案例,并且需要更新头部变量。