המשימה
בתור אין דרך להציץ פנימה — הדרך היחידה לראות איבר היא להוציא אותו,
וזה הורס את התור. לכן בונים העתק.
כתבו **שתי** פעולות:
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"]}
```
קוד הפתיחה
using System;
class Program {
/** מחזירה העתק של q. התור המקורי חייב להישאר כמו שהיה. */
static Queue<int> CopyQueue(Queue<int> q) {
// כתוב את הפתרון כאן
return new Queue<int>();
}
/** מדפיסה את התור מופרד ברווח, בלי לפגוע בו. השתמש ב-CopyQueue. */
static void PrintQueue(Queue<int> q) {
// כתוב את הפתרון כאן
}
static void Main() {
Queue<int> q = new Queue<int>();
q.Insert(1);
q.Insert(2);
q.Insert(3);
PrintQueue(q); // 1 2 3
Console.WriteLine(q); // [1,2,3] — ללא שינוי
PrintQueue(q); // 1 2 3 — שוב, וזה עדיין עובד
PrintQueue(new Queue<int>()); // שורה ריקה, בלי שגיאה
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.