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

הסרת כפילויות מתור

מאתגר C#

המשימה

ממשו את הפעולה removeDuplicates שמקבלת תור של מספרים שלמים ומסירה ממנו
את הערכים הכפולים. מכל ערך יישאר **המופע הראשון** שלו, במקומו המקורי.

דוגמה:
  [3, 7, 3, 1, 7, 3]   →   [3, 7, 1]

הנחיות:
• הפעולה משנה את התור שהתקבל.
• מותר להשתמש בתורים נוספים, ורק בהם.
• פרקו לתת-בעיות. שתי פעולות עזר שיסייעו:
    - contains(q, x) — האם x קיים בתור, בלי לפגוע בו.
    - copyQueue(q)   — מחזירה העתק, בלי לפגוע במקורי.
• רשמו בהערה מהי יעילות הפעולה כפונקציה של מספר האיברים בתור המקורי.

ממשק מבני הנתונים כבר מצורף למשימה.

```ds:queue
{"title":"לפני","items":["3","7","3","1","7","3"]}
```

```ds:queue
{"title":"אחרי — כל ערך נשאר במקום הופעתו הראשונה","items":["3","7","1"]}
```

קוד הפתיחה

using System;

class Program {

    /** האם x קיים בתור. התור אינו משתנה. */
    static bool Contains(Queue<int> q, int x) {
        // כתוב את הפתרון כאן
        return false;
    }

    /** מחזירה העתק של q. התור המקורי אינו משתנה. */
    static Queue<int> CopyQueue(Queue<int> q) {
        // כתוב את הפתרון כאן
        return new Queue<int>();
    }

    // יעילות: ______   (השלם בהערה)
    static void RemoveDuplicates(Queue<int> q) {
        // כתוב את הפתרון כאן
    }

    static void Main() {
        Queue<int> q = new Queue<int>();
        int[] data = {3, 7, 3, 1, 7, 3};
        foreach (int v in data) q.Insert(v);

        Console.WriteLine(q);        // [3,7,3,1,7,3]
        RemoveDuplicates(q);
        Console.WriteLine(q);        // [3,7,1]

        Queue<int> b = new Queue<int>();
        b.Insert(5); b.Insert(5); b.Insert(5);
        RemoveDuplicates(b);
        Console.WriteLine(b);        // [5]

        Queue<int> empty = new Queue<int>();
        RemoveDuplicates(empty);
        Console.WriteLine(empty);    // []
    }
}

כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.

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