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

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

מאתגר Java

המשימה

כתוב פעולה שמקבלת מצביע לחוליה הראשונה בשרשרת וערך 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 כבר מצורפת למשימה.

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

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

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

קוד הפתיחה

public class Main {

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

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

    public static void print(Node<Integer> head) {
        Node<Integer> pos = head;
        while (pos != null) {
            System.out.print(pos.getInfo() + " -> ");
            pos = pos.getNext();
        }
        System.out.println("null");
    }

    public static void main(String[] args) {
        Node<Integer> 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<Integer> b = build(new int[]{5, 5, 5});
        b = removeAll(b, 5);
        print(b);                       // null

        Node<Integer> c = build(new int[]{1, 2, 3});
        c = removeAll(c, 9);
        print(c);                       // 1 -> 2 -> 3 -> null

        print(removeAll(null, 5));      // null
    }
}

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

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