[英]Linked list add method not working as expected
因此,我正在嘗試解決一個涉及將對象添加到鏈接列表的問題。 從早上開始我就一直在解決這個問題,到目前為止我還沒有確切的輸出。
我的程序基本上是根據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;
}
這就是我為linked list
類編碼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;
}
}
}
但是,當我嘗試運行我的程序時,它僅顯示一名患者。
從早上開始,我就一直在修補自己的方法,這是到目前為止我所得到的。 也許我需要重新審視,因為現在我無法解決這個問題。 任何幫助將不勝感激。 我得到的輸出
編輯2
該列表已完全打印出來,但沒有執行標准,如果嚴重性相同,則以升序存儲患者。
您將指針從前一個設置為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;
您還需要處理新專利在列表中排在第一位的情況,並且head變量需要更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.