struct ListNode* removeElements(struct ListNode* head, int val) {
if(head==NULL){
return NULL;
}
struct ListNode* result=head;
struct ListNode* Index=head;
while(Index!=NULL&&Index->val==val){
struct ListNode* temp=Index;
Index=Index->next;
free(temp);
}
result=Index;
while(Index!=NULL){
while(Index->next&&Index->next->val==val){
struct ListNode* temp=Index->next;
Index->next=Index->next->next;
free(temp);
}
Index=Index->next;
}
return result;
}
if(head==NULL){
return NULL;
}
struct ListNode* result=head;
struct ListNode* Index=head;
while(Index!=NULL&&Index->val==val){
struct ListNode* temp=Index;
Index=Index->next;
free(temp);
}
result=Index;
while(Index!=NULL){
while(Index->next&&Index->next->val==val){
struct ListNode* temp=Index->next;
Index->next=Index->next->next;
free(temp);
}
Index=Index->next;
}
return result;
}