Так что я пытаюсь решить проблему, связанную с добавлением объектов в связанный список. Я был с этой проблемой с утра, и до сих пор я еще не получил точный результат.Метод добавления связанного списка не работает должным образом
Моя программа в основном добавляет пациентов в связанный список в соответствии с двумя критериями: 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
Edit 2
Список печать полностью, но он не выполняет критерии, если тяжесть такой же, а затем сохранить пациентов в порядке возрастания.
Я не обрабатываю первого пациента через инструкцию 'if (head == null)'? – Mooe
Я только что запустил программу, но она все еще показывает только одного пациента. Похоже, что он теряет узлы. – Mooe
Я просто добавил правильную коррекцию для случая, когда новый пациент является первым в списке. В этом случае вам нужно сделать головную переменную точкой новой записи. Если ваш тест не был донгом, тогда вы можете не обновлять голову и никогда не видеть ничего, кроме первого, который вы вложили. – AgilePro