מדעי המחשב קיץ תשפ"ד 899271 פתרון מלא שאלה אחת בשפ...

מדעי המחשב קיץ תשפ"ד 899271 פתרון מלא שאלה אחת בשפת Java שאלון בגרות

פתרון שאלה שנייה:

public class Patient{
private int id;
private int priority; //1-10
public int getPriority()
{
return priority;
}
public int getId()
{
return id;
}
public void setPriority(int p)
{
this.priority = p ;
}
}





public class PriorityQueue{
private Queue<Patient> q = new Queue<Patient>();
public void priorityInsert(Patient p)
{
Queue<Patient> temp = new Queue<Patient>();
if(q.isEmpty())
{
q.insert(p);
return ;
}
while(!q.isEmpty() && q.head().getPriority() >= p.getPriority())
temp.insert(q.remove());
temp.insert(p);
while(!q.isEmpty())
temp.insert(q.remove());
while(!temp.isEmpty())
q.insert(temp.remove());
}
public void update(int id, int pri)
{
Queue<Patient> temp = new Queue<Patient>();
while(!q.isEmpty() && q.head().getId()!= pri)
temp.insert(q.remove());
Patient p = q.remove(); //remove the patient
p.setPriority(pri);
while(!q.isEmpty())
temp.insert(q.remove());
while(!temp.isEmpty())
q.insert(temp.remove());
priorityInsert(p);
}
}