המשימה
בתור אין דרך להציץ פנימה — הדרך היחידה לראות איבר היא להוציא אותו,
וזה הורס את התור. לכן בונים העתק.
כתבו **שתי** פעולות:
1. copyQueue(q) — מקבלת תור ומחזירה העתק שלו, כשהתור המקורי נשאר
בדיוק כמו שהיה.
2. printQueue(q) — מדפיסה את איברי התור מהראש לסוף, מופרדים ברווח,
בלי לפגוע בתור. **חייבת להשתמש ב-copyQueue.**
דוגמה עבור התור [1,2,3] כאשר 1 בראש:
1 2 3
הנחיות:
• remove על תור ריק זורק שגיאת ריצה — בדקו isEmpty לפני.
• רמז ל-copyQueue: פינוי לתור עזר לא מספיק, כי אז המקורי ריק.
חשבו כמה תורים אתם צריכים.
ממשק מבני הנתונים כבר מצורף למשימה.
```ds:queue
{"title":"התור — front משמאל, rear מימין","items":["1","2","3"]}
```
קוד הפתיחה
public class Main {
/** מחזירה העתק של q. התור המקורי חייב להישאר כמו שהיה. */
public static Queue<Integer> copyQueue(Queue<Integer> q) {
// כתוב את הפתרון כאן
return new Queue<Integer>();
}
/** מדפיסה את התור מופרד ברווח, בלי לפגוע בו. השתמש ב-copyQueue. */
public static void printQueue(Queue<Integer> q) {
// כתוב את הפתרון כאן
}
public static void main(String[] args) {
Queue<Integer> q = new Queue<Integer>();
q.insert(1);
q.insert(2);
q.insert(3);
printQueue(q); // 1 2 3
System.out.println(q); // [1,2,3] — ללא שינוי
printQueue(q); // 1 2 3 — שוב, וזה עדיין עובד
printQueue(new Queue<Integer>()); // שורה ריקה, בלי שגיאה
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.