题目:
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
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
C代码:
/*struct ListNode
{
int val;
struct ListNode *next;
};
*/
struct ListNode* removeElements(struct ListNode* head, int val) {
if(NULL == head) return head;
struct ListNode *p=head;
struct ListNode *pre=NULL;
while(NULL != p){
if(p->val == val){
struct ListNode *del =p;
p=p->next;
if(NULL!= pre){
pre->next=p;
}else{
head=p;
}
free(del);
} else{
pre=p;
p=p->next;
}
}
return head;
}