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

הערה כללית לשאלה:

  • אין להשתמש במבני נתונים נוספים פרט לתור/תורים.
  • יש לשמור את התור במצב מקורי בסיום הפעולה.
  • אפשר להניח שקיימת הפעולה Clone המחזירה העתק של התור. כותרת הפעולה:
public static Queue<int> Clone(Queue<int> q)

סיבוכיות של הפעולה Clone היא O(n) כאשר n = מספר האיברים בתור.

סעיף א

כתבו פעולה המקבלת תור של מספרים שלמים q ומספר שלם num. הפעולה תחזיר את מיקומו הראשון של num בתוך התור. אם num לא מופיע בתור, הפעולה תחזיר ערך -1.

לדוגמה: עבור התור q הבא והמספר num=3 (מהראש לזנב): 18, 3, 15, 13, 3, 12, 21, 12, 10, 3, 7

הפעולה תחזיר 2.

כותרת הפעולה:

public static int FirstPosition(Queue<int> q, int num)
סעיף ב

כתבו פעולה המקבלת תור של מספרים שלמים q ומספר שלם num. הפעולה תחזיר את מיקומו האחרון של num בתוך התור. אם num לא מופיע בתור, הפעולה תחזיר ערך -1.

הפעולה תחזיר 10.

כותרת הפעולה:

public static int LastPosition(Queue<int> q, int num)
סעיף ג

כתבו פעולה המקבלת מספר שלם וחיובי K ותור של מספרים שלמים, כל מספר בתור מופיע פעמיים בדיוק. הפעולה תבדוק אם קיים בתור זוג איברים זהים שמרחק ביניהם שווה ל-K. המרחק בין שני איברים בתור הוא כמות האיברים הנמצאים ביניהם.

לדוגמה: עבור התור הבא ו-K=4 הפעולה תחזיר true כי מרחק בין שני מספרים זהים (2 ו-2) הוא 4 (מהראש לזנב): 4, 8, 2, 11, 4, 11, 1, 2, 8, 1

כותרת הפעולה:

public static bool IsDistanceK(Queue<int> q, int k)
סעיף ד

מהי הסיבוכיות של הפעולות שכתבתם בסעיפים א'–ג'? הסבירו את תשובתכם.

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

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

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

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