构建一个虚头结点对立所有结点的删除操作
及时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; }