203 remove linked list elements
622 ワード
簡単明瞭ですが、ヘッダノードを削除する場合はdummyヘッダを使用するのが望ましいです
struct ListNode* removeElements(struct ListNode* head, int val) {
if(head == NULL)
return NULL;
struct ListNode *prev, *curr;
struct ListNode *dummyhead = malloc(sizeof(struct ListNode));
dummyhead->next = head;
prev = dummyhead;
curr = dummyhead->next;
while(curr){
if(curr->val == val){
prev->next = curr->next;
curr = prev->next;
}else{
curr = curr->next;
prev = prev->next;
}
}
return dummyhead->next;
}