题目描述:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
解题思路:
只需遍历整个链表,维护一个当前结点的前指针,若要找到删除的元素,直接将前指针的next域指向当前待删除结点的next域即可。
public ListNode removeElements(ListNode head, int val) {
//前指针
ListNode pre = new ListNode(-1);
//记录头结点的位置
ListNode newHead = pre;
while(head != null) {
if(head.val == val) {
pre.next = head.next;
}else {
pre.next = head;
pre = pre.next;
}
head = head.next;
}
return newHead.next;
}