הגדרה 1: תור "מושלם N" הוא תור של מספרים שלמים המכיל את כל המספרים שבין 1 ל-N (כולל).
לדוגמה: התור הבא הוא תור מושלם של 5 אבל לא תור מושלם של 7 (כי מספר 6 אינו מופיע בתור).
4, 5, 3, 15, 2, 4, 1, 7 (מהראש לזנב)
כתבו פעולה public static bool IsPerfectN(Queue<int> q, int n) המקבלת תור של מספרים שלמים q ומספר שלם וחיובי n. הפעולה תבדוק אם תור הוא "תור מושלם של n". אם כן – הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.
public static bool IsPerfectN(Queue<int> q, int n)
הגדרה 2: תור "סופר מושלם N" הוא תור של מספרים שלמים המכיל את כל המספרים שבין 1 ל-N (כולל) ורק אותם.
כתבו פעולה public static void DoItSuper(Queue<int> q, int n) המקבלת תור של מספרים שלמים q ומספר שלם וחיובי n. הפעולה מורידה מתור ערכים מיותרים ומוסיפה בסוף התור ערכים חסרים, כך שיתקבל תור "סופר מושלם n".
אם לפני זימון הפעולה התור q היה (מהראש לזנב):
4, 5, 3, 15, 2, 4, 1, 7
אז אחרי ביצוע זימון הפעולה DoItSuper(q, 9) התור q יהיה (מהראש לזנב):
4, 5, 3, 2, 4, 1, 7, 6, 8, 9
public static void DoItSuper(Queue<int> q, int n)
מהן הסיבוכיות של הפעולות שכתבתם בסעיפים א'–ב'? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.