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