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

הסרת המופע הראשון

בינוני C#

המשימה

כתוב פעולה שמקבלת מצביע לחוליה הראשונה בשרשרת וערך שלם x,
מסירה את **החוליה הראשונה בלבד** שערכה x (אם קיימת),
ומחזירה מצביע לראש השרשרת החדשה.

דוגמאות עבור x=5:
  1 → 5 → 2 → 5 → null   →   1 → 2 → 5 → null
  5 → 1 → null            →   1 → null
  1 → 2 → null            →   1 → 2 → null   (אין מה להסיר)

הנחיות:
• **הפעולה מחזירה Node.** אם המופע הראשון הוא בראש השרשרת, הראש משתנה.
• רק מופע אחד מוסר. אחרי שהסרתם — צאו.

המחלקה Node כבר מצורפת למשימה.

```ds:list
{"title":"לפני — removeFirst(head, 5)","items":["1","5","2","5"]}
```

```ds:list
{"title":"אחרי — רק המופע הראשון הוסר","items":["1","2","5"]}
```

קוד הפתיחה

using System;

class Program {

    /** מסירה את המופע הראשון של x ומחזירה את הראש החדש. */
    static Node<int> RemoveFirst(Node<int> head, int x) {
        // כתוב את הפתרון כאן
        return head;
    }

    // ── עזר, לא חלק מהמשימה ──────────────────────────────────────────
    static Node<int> Build(int[] v) {
        Node<int> h = null;
        for (int i = v.Length - 1; i >= 0; i--) h = new Node<int>(v[i], h);
        return h;
    }

    static void Print(Node<int> head) {
        Node<int> p = head;
        while (p != null) { Console.Write(p.GetInfo() + " -> "); p = p.GetNext(); }
        Console.WriteLine("null");
    }

    static void Main() {
        Print(RemoveFirst(Build(new int[]{1, 5, 2, 5}), 5));   // 1 -> 2 -> 5 -> null
        Print(RemoveFirst(Build(new int[]{5, 1}), 5));         // 1 -> null
        Print(RemoveFirst(Build(new int[]{1, 2}), 5));         // 1 -> 2 -> null
        Print(RemoveFirst(null, 5));                           // null
    }
}

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

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