1.描述
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
2.分析
3.代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val) {
if (NULL == head) return head;
struct ListNode *cur = head;
struct ListNode *pre = head;
while (cur != NULL) {
if (cur->val == val) {
struct ListNode *tmp = cur;
if (cur == head) {
cur = head = pre = cur->next;
} else {
pre->next = cur->next;
cur = cur->next;
}
free(tmp);
tmp = NULL;
} else {
pre = cur;
cur = cur->next;
}
}
return head;
}