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
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 struct ListNode* removeElements(struct ListNode* head, int val) { 9 struct ListNode* cur; 10 struct ListNode* pre; 11 if(NULL == head) 12 return head; 13 cur = head; 14 pre = head; 15 while(cur != NULL) 16 { 17 if(val == head->val) //注意刪除頭結點的情況! 18 { 19 head = head->next; 20 cur = head; 21 pre = head; 22 continue; 23 } 24 if(val == cur->val) 25 { 26 pre->next = cur->next; 27 cur = cur->next; 28 continue; 29 } 30 pre = cur; 31 cur = cur->next; 32 } 33 return head; 34 }