解题思路:
1.判断头结点是否为需要删除的元素,为防止链表开头有多个元素均为指定元素,所以使用while循环判断
2.判断头结点是否为空,
3.声明一个prev节点,prev.next节点为当前判断的节点,
如果当前节点的值等于指定元素,那么直接用prev.next.next替换prev.next;
如果不相等,则执行prev = prev.next,判断的下一个节点;
public class 删除单链表指定元素_01 {
// Definition for singly-linked list.
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class Solution {
public ListNode removeElements(ListNode head, int val) {
while(head != null && head.val == val) {
head = head.next;
}
if(head == null) {
return null;
}
ListNode prev = head;
while(prev.next != null) {
if(prev.next.val == val) {
prev.next = prev.next.next;
}else {
prev = prev.next;
}
}
return head;
}
}
}