链接:https://leetcode-cn.com/problems/remove-linked-list-elements/
思路:
此处要将给定元素val全部删除
1.链表判空
2.定义虚拟头结点root,用于存储删除元素后的链表,最终返回root.next即可
3.定义指针cur,从root开始用于遍历root所存储的链表,cur其实也算是root的尾指针
4.head后移,直到head为空为止
5.在4循环中,如果head当前节点的值不等于指定值val,将该节点尾插法到root下;否则跳过该节点
6.为了避免cur与原链表还有关联,将cur的下一跳制空
7.返回root.next即为删除元素后的链表
class Solution {
public ListNode removeElements(ListNode head, int val) {
//1.
if(head==null){
return null;
}
//2.
ListNode root=new ListNode(0);
//3.
ListNode cur=root;
//4.
while(head!=null){
//5.
if(head.val!=val){
cur.next=head;
cur=cur.next;
}
head=head.next;
}
//6.
cur.next=null;
//7.
return root.next;
}
}