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 }