אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2022 · אביב מועד ב · שאלה 7כל שאלות המבחן ←
מבנים לינארייםתורים

DoubleQueue מכילה שני תורים first, second. count/addValue נתונות. queueID=1→first, queueID=2→second (לפי תיקון מה"ט).

public class DoubleQueue {
    private Queue<Integer> first;
    private Queue<Integer> second;

    // נתונות, אין צורך לממש:
    public int count(int queueID) { /* מחזירה מספר איברים בתור queueID */ }
    public void addValue(int num, int queueID) { /* מוסיפה את num לתור queueID */ }
}

דוגמה מלאה (עמוד 10 java / עמוד 25 csharp, אומתה מתמונת ה-PDF): תור כפול לפני זימון order ואחריו.

לפני order:
first:  10 2 4 8 33
second: 18

אחרי order (n=6, n/2=3; שלוש הגדולות ביותר {33,18,10} עוברות ל-second, שלוש הקטנות ביותר {2,4,8} נשארות/עוברות ל-first):
first:  2 4 8
second: 10 18 33
סעיף א

כתבו פעולה המקבלת מספר תור queueID ומחזירה ערך הגדול ביותר בתור.

public int maxValue(int queueID)

סעיף ב

כתבו פעולה המקבלת מספר שלם num ומספר תור queueID. הפעולה מוחקת מתור queueID את המספר num. אם המספר num מופיע יותר מפעם אחת בתור, הפעולה תמחק רק מופע אחד של המספר. אם המספר num לא מופיע בתור, הפעולה אינה מבצעת דבר.

public void eraseValue(int num, int queueID)

סעיף ג

כתבו את הפעולה: הפעולה מקבלת תור כפול של מספרים שלמים dq. מספר האיברים בתור dq זוגי. הפעולה תחלק את האיברים בין התורים first ו-second, לפי הכלל הבא: מספר האיברים בשני התורים זהה; ההפרש בין סכום האיברים הנמצאים בתור second וסכום האיברים הנמצאים בתור first יהיה הגדול ביותר. שימו לב! בסעיף ג' אפשר להשתמש רק בפעולות שהוגדרו במחלקה DoubleQueue! אין להוסיף פעולות נוספות או להשתמש במבני נתונים נוספים!

public static void order(DoubleQueue dq)

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

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

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

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