删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
//要考虑删除的是否是头节点
//先建一个头节点的前节点
ListNode pre = new ListNode(-1);
pre.next = head;
//在建一个临时节点用于输出最后的结果
ListNode res = pre;
while(pre.next != null){
if(pre.next.val == val){
pre.next = pre.next.next;
}else{
pre = pre.next;
}
}
//注意:遍历完整个链表之后,pre是指向最后一个节点,如果返回pre.next其实是空的;
//而我们预设的res其实是一个特殊的头节点,
//如果输入结果是[1,2,3],想要删除1,最后会得到的是[res,2,3]
//因此直接输出res.next就可以了
return res.next ;
}