class Solution {
public:
    ListNode* deleteNode(ListNode* head, int val) {
        ListNode* tmp = head;
        ListNode* last = head;
        if(head->val==val) return head->next;
        tmp = tmp->next;
        while(tmp){
            if(tmp->val==val){
                last->next = tmp->next;   //核心语句,解释在下面
                return head;
            }
            tmp=tmp->next;
            last=last->next;
        }
        return head;
    }
};

删除的意思就是让当前要删除的结点的前面那个结点的next指向当前结点的next,从而越过当前这个节点达到删除的效果。