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

נתונה המחלקה Patient (id, priority — 1 עד 10, ככל שגבוה יותר הדחיפות גבוהה יותר) והמחלקה PriorQueue שמחזיקה q — הפניה לתור Patient. סדר הטיפול: קודם עדיפות גבוהה יותר; באותה עדיפות — מי שהגיע קודם. הדוגמה המשמשת לאורך השאלה: [13893,7] → [28834,7] → [72890,6] → [12223,4] → [13335,4] → [33800,4] (מראש התור לסופו). שני הסעיפים משתמשים אך ורק בפעולות התור.

public class Patient {
    private int id;
    private int priority;   // 1..10, higher = more urgent
    // Get/Set for both fields (given)
}

public class PriorQueue {
    private Queue<Patient> q;
    // Get/Set for q (given)
}

דוגמה לתור 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)

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

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

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

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