co89757
8/3/2016 - 12:55 AM

Remove linked list node with 2nd level pointer

Remove linked list node with 2nd level pointer

void remove_if(node ** head, remove_fn rm)
{
    for (node** curr = head; *curr; )
    {
        node * entry = *curr;
        if (rm(entry))
        {
            *curr = entry->next;
            free(entry);
        }
        else
            curr = &entry->next;
    }
}