java two easy exercise

profilesehj
Activity9B.java

public class Activity9B { public static void main(String[] args) { PatientList emergency = new PatientList(); emergency.add("Zelma", 1); System.out.println("Next admission: " + emergency.nextAdmission()); emergency.add("Clayton", 2); System.out.println("Next admission: " + emergency.nextAdmission()); emergency.add("Casper", 3); System.out.println("Next admission: " + emergency.nextAdmission()); emergency.add("Ihor", 1); System.out.println("Next admission: " + emergency.nextAdmission()); emergency.add("Edwina", 3); System.out.println("Next admission: " + emergency.nextAdmission()); emergency.print(); System.out.println("\nEnd of processing."); } } class Patient { private String name; private int arrival; private int severity; public Patient(String name, int arrival, int severity) { this.name = name; this.arrival = arrival; this.severity = severity; } public boolean isAdmittedBefore(Patient other, int lastArrival) { boolean before; int priority, otherPriority; if (severity == 3) { // admitted before, unless the other's severity is 3 and arrived earlier before = (other.severity != 3) || (other.arrival > arrival); } else if (other.severity == 3) { before = false; } else { priority = (lastArrival - arrival) * severity; otherPriority = (lastArrival - other.arrival) * other.severity; before = (priority > otherPriority) || ((priority == otherPriority) && other.arrival > arrival); } return before; } public String toString() { return name + " arrived at " + arrival + " with severity " + severity; } } class PatientList { private PatientNode head; private int lastArrival; public PatientList() { head = null; lastArrival = 1; } public void add(String name, int severity) { Patient patient; patient = new Patient(name, lastArrival, severity); lastArrival++; head = new PatientNode(patient, head); } public Patient nextAdmission() { PatientNode current; Patient toAdmit = null; current = head; while (current != null) { if (toAdmit == null) { toAdmit = current.data; } else { if (current.data.isAdmittedBefore(toAdmit, lastArrival)) { toAdmit = current.data; } } current = current.next; } return toAdmit; } public void print() { PatientNode current; int size = 0; current = head; while (current != null) { System.out.println(current.data); size++; current = current.next; } System.out.println("Size = " + size); System.out.println("Last arrival = " + size); } } class PatientNode { public Patient data; public PatientNode next; public PatientNode(Patient data, PatientNode next) { this.data = data; this.next = next; } }