- 题目:给定一个链表和一个待删除的值x(将链表中等于x的节点都删掉)
- 难度:Easy
- 思路:在代码里有详细写
- 代码:
public class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head == null){
return head;
}
//定义辅助节点,可以减少很多null判断
ListNode newHead = new ListNode(0);
newHead.next = head;
ListNode pre = newHead;
ListNode curr = pre.next;
while(curr != null){
//1.如果当前节点的值等于被删除的值,将pre的next指针指向当前节点的下一个节点
//2.如果不等于,则pre节点移到下一个节点的位置
//3.当前节点往后移动
ListNode next = curr.next;
if(curr.val == val){
pre.next = curr.next;
curr = null;//将删除节点赋值为null
}else{
pre = pre.next;
}
curr = next;
}
return newHead.next;
}