簡體   English   中英

鏈表添加方法無法正常工作

[英]Linked list add method not working as expected

因此,我正在嘗試解決一個涉及將對象添加到鏈接列表的問題。 從早上開始我就一直在解決這個問題,到目前為止我還沒有確切的輸出。

我的程序基本上是根據severityarrival兩個標准將患者添加到鏈表中。 我想使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM