אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2024 · קיץ מועד א · שאלה 2כל שאלות המבחן ←
מבנים לינאריים›תורים

נתונה המחלקה Patient – חולה בחדר מיון, ולה שתי תכונות:

  • id – מספר הזהות של החולה, מטיפוס שלם.
  • priority – רמת הדחיפות של הטיפול בחולה. רמת הדחיפות מיוצגת במספר מטיפוס שלם בין 1 ל-10. ככל שהמספר גבוה יותר, רמת הדחיפות גבוהה יותר.

הניחו שלתכונות המחלקה יש פעולות Get ו-Set.

סדר הטיפול בחולים בחדר המיון מתנהל באופן שלהלן: ככל שרמת הדחיפות של הטיפול גבוהה יותר, החולה מטופל מוקדם יותר. כאשר יש יותר מחולה אחד באותה רמת דחיפות, החולה שהגיע קודם לחדר המיון מטופל מוקדם יותר.

כדי לשמור על סדר הטיפול נבנתה המחלקה PriorQueue – תור עדיפויות, ולה תכונה אחת:

  • q – הפניה לתור, מטיפוס Queue<Patient>.
public class Patient {
    private int id;
    private int priority;
}

public class PriorQueue {
    private Queue<Patient> q;
}

דוגמה לתור q (מראש התור לסופו):

התור q שבדוגמה

ראש התור → [id=13893, priority=7] → [id=28834, priority=7] → [id=72890, priority=6] → [id=12223, priority=4] → [id=13335, priority=4] → [id=33800, priority=4] ← סוף התור

הניחו שהחולים שרמת הדחיפות שלהם זהה מוצגים בדוגמה לפי סדר הגעתם לחדר המיון.

העצם p והתור לאחר ההכנסה (סעיף א):

העצם p והתור לאחר ההכנסה (סעיף א)

סעיף א

ממשו את הפעולה שלפניכם השייכת לממשק המחלקה PriorQueue: הפעולה מקבלת חולה חדש – p ומכניסה אותו לתור q בהתאם לכללים של חדר המיון הכתובים לעיל. לדוגמה: עבור התור המוצג לעיל והעצם p שלפניכם: [id = 11210, priority = 6] התור ייראה כך לאחר ההכנסה (מראש התור לסופו): [13893, 7] → [28834, 7] → [72890, 6] → [11210, 6] → [12223, 4] → [13335, 4] → [33800, 4]

public void PriorityInsert (Patient p)

סעיף ב

מדי פעם רמת הדחיפות של חולה מסוים משתנה במהלך שהותו בחדר המיון. ממשו את הפעולה שלפניכם השייכת לממשק המחלקה PriorQueue: הפעולה מקבלת מספר זהות של חולה הנמצא בתור – id, ומספר – pri המייצג את רמת הדחיפות המעודכנת שלו. הפעולה תעדכן את התכונה priority של החולה ותמקם אותו בתור לטיפול במקום המתאים לו (בהתאם לרמת הדחיפות המעודכנת – pri). אם בתור יש כבר חולים אחרים באותה רמת דחיפות – pri, החולה הנוכחי – id יוצב אחריהם כאילו הגיע אחריהם לחדר המיון.

public void Update (int id, int pri)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי