- 方法一:不使用虚拟头节点
ListNode.java定义节点类 |
Main.java主函数 |
Solution.java定义过滤函数 |
ListNode.java
public class ListNode {//链表类
public int val;
public ListNode next;
public ListNode(int x) {//构造函数
val = x;
}
}
Solution.java
//不使用虚拟头节点
class Solution {
public ListNode removeElements(ListNode head, int val) {//head是虚拟头节点
while(head != null && head.val == val){//删除头节点比删除其他节点要麻烦一些,所以单独拿出来写
ListNode delNode = head;
head = head.next;
delNode.next = null;
}
if(head == null)//头节点为空意味着链表为空
return head;
ListNode prev = head;
while(prev.next != null){
if(prev.next.val == val) {
ListNode delNode = prev.next;
prev.next = delNode.next;
delNode.next = null;
}
else
prev = prev.next;
}
return head;
}
}
Main.java
import java.util.Scanner;
public class Main {
publ