题目

链表节点类:删除值为 x 的节点

思路

本题在链表节点类中删除值为 x 的节点。 特判头节点:若头元素等于 x 则更新 head。否则用 prev 跟踪前驱,找到 cur->v==x 时让 prev->next=cur->next 并 垃圾回收(不必手动)cur)。

解题分析

删第一个值为 x 的节点:找前驱 p 使 p->next->v==x,p->next=p->next->next,别 free 后仍访问。虚拟头结点 dummy 可统一删头节点的情况。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int n = 4;
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) list.add(1);
        int x = 2;
        list.removeIf(v -> v == x);
        for (int i = 0; i < list.size(); i++)
        System.out.print(list.get(i) + (i + 1 < list.size() ? " " : "\n"));
    }
}

运行示例

输出:

1 3 2