构建一个虚头结点对立所有结点的删除操作
及时free好习惯
移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetb...
起源:力扣(LeetCode)
题解作者:WildDuck

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */typedef struct ListNode* ListNode_pointer;struct ListNode* removeElements(struct ListNode* head, int val){    //手动构建头结点,将删除elem的操作对立    ListNode_pointer save_head = head;    ListNode_pointer free_pointer = NULL;    ListNode_pointer temp_head = (ListNode_pointer)malloc(sizeof(struct ListNode));    ListNode_pointer save_temp_head = temp_head;    temp_head -> next = head;        while(head != NULL)    {        if(head->val != val)        {            temp_head = temp_head->next;            head = head->next;        }        else if(head->val == val)        {            temp_head -> next = head->next;            free_pointer = head;            head = head->next;            free(free_pointer);        }    }    free_pointer = save_temp_head;    save_temp_head = save_temp_head->next;    free(free_pointer);    return save_temp_head;    }