תרגול מדעי המחשב

העתקת תור והדפסתו

בינוני C#

המשימה

בתור אין דרך להציץ פנימה — הדרך היחידה לראות איבר היא להוציא אותו,
וזה הורס את התור. לכן בונים העתק.

כתבו **שתי** פעולות:

  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 ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון — כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות בדיקה חיצוני.