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

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

בינוני Java

המשימה

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

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

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