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

הסרת כל המופעים של ערך

מאתגר C#

המשימה

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

דוגמאות עבור x=5:
  1 → 5 → 5 → 2 → 5 → null   →   1 → 2 → null
  5 → 5 → 5 → null            →   null
  1 → 2 → 3 → null            →   1 → 2 → 3 → null

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

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

[רשימה מקושרת]

[רשימה מקושרת]

[רשימה מקושרת]

קוד הפתיחה

using System;

class Program {

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

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

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

    static void Main() {
        Node<int> a = Build(new int[]{1, 5, 5, 2, 5});
        Print(a);                       // 1 -> 5 -> 5 -> 2 -> 5 -> null
        a = RemoveAll(a, 5);
        Print(a);                       // 1 -> 2 -> null

        Node<int> b = Build(new int[]{5, 5, 5});
        b = RemoveAll(b, 5);
        Print(b);                       // null

        Node<int> c = Build(new int[]{1, 2, 3});
        c = RemoveAll(c, 9);
        Print(c);                       // 1 -> 2 -> 3 -> null

        Print(RemoveAll(null, 5));      // null
    }
}

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

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