标签:head,cur,val,元素,next,链表,移除,prev From: https://blog.csdn.net/2302_81707171/article/details/142433116思路:
1.首先判断链表是否为空,若为空直接返回head(null)
2.若链表不为空,让prev记住要删除节点的前一个位置,cur指向要删除的元素位置,若cur指向的val==要删除的值,就让prev.next指向cur.next
3.因为cur是从head的下一个节点位置开始判断的,就没有判断头节点是否为要删除的元素,最后用if语句判断收尾
解决代码如下:public ListNode removeElements(ListNode head, int val) { //首先判断链表是否为空,若为空直接返回head(null) if(head==null){ return head; } ListNode prev=head; ListNode cur=head.next; //若链表不为空,让prev记住要删除节点的前一个位置, //cur指向要删除的元素位置, //若cur指向的val==要删除的值,就让prev.next指向cur.next` while(cur!=null){ if(cur.val==val){ prev.next=cur.next; cur=cur.next; }else{ prev=cur; cur=cur.next; } } //因为cur是从head的下一个节点位置开始判断的, //就没有判断头节点是否为要删除的元素,最后用if语句判断收尾 if(head.val==val){ head=head.next; } return head; } }