/**
* 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) {
//要删除链表的结点就需要两个个指针往下去遍历链表,prevP是为了记录当前结点的前一个结点,p是为了记录当前结点
//为了方便为原链表建一个哨位结点,这样就能表示第一个结点的前一个结点
if(head == null) return null;
ListNode head1 = new ListNode(0);
head1.next = head;
ListNode prevP = head1;
ListNode p = head;
while(p != null){//循环中没有用到p.next.next,所以循环控制条件不用写while(p.next != null)
if(p.val == val){//每一次都是判断当前结点
prevP.next = p.next;
p = p.next;
}
else{//没有删除才正常移动
prevP = prevP.next;
p = p.next;
}
}
//循环中没有用到p.next.next,所以循环控制条件不用写while(p.next != null),也不用加下面这个了
/*//因为循环控制条件是while(p.next != null),所以最后还剩下一个单独的一个结点
if(p.val == val){
prevP.next = null;
}*/
return head1.next;
}
}
转载请注明原文地址: https://ju.6miu.com/read-670645.html