题目
链表节点类:删除值为 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