链表删除小技巧

CoolShell上看到的小技巧,记下来先。

typedef std::function remove_fn;
void remove(node** head, remove_fn fn) 
{
    for (node** curr = head; *curr;) {
        node* entry = *curr;
        if (fn(entry)) {
            *curr = entry->next;
            delete entry;
        } else {
            curr = &entry->next;
        }
    }
}

你可能感兴趣的:(链表删除小技巧)