(א)הגדרה 1: תור "מושלם N" הוא תור של מספרים שלמים המכיל את כל המספרים שבין 1 ל-N (כולל).

לדוגמה: התור הבא הוא תור מושלם של 5 אבל לא תור מושלם של 7 (כי מספר 6 אינו מופיע בתור).
`4, 5, 3, 15, 2, 4, 1, 7` (מהראש לזנב)

כתבו פעולה `public static boolean isPerfectN(Queue<Integer> q, int n)` המקבלת תור של מספרים שלמים q ומספר שלם וחיובי n. הפעולה תבדוק אם תור הוא "תור מושלם של n". אם כן – הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.

```java
public static boolean isPerfectN(Queue<Integer> q, int n)
```
(ב)הגדרה 2: תור "סופר מושלם N" הוא תור של מספרים שלמים המכיל את כל המספרים שבין 1 ל-N (כולל) ורק אותם.

כתבו פעולה `public static void doItSuper(Queue<Integer> 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`

```java
public static void doItSuper(Queue<Integer> q, int n)
```
(ג)מהן הסיבוכיות של הפעולות שכתבתם בסעיפים א'–ב'? הסבירו את תשובתכם.

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

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

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

רוצים לתרגל אלפי שאלות נוספות?

המשיכו לתרגול מלא עם משוב אישי ←

מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות

המשיכו לתרגול מלא ←