diff --git a/linked_list.h b/linked_list.h index 1e44129..e23d16e 100644 --- a/linked_list.h +++ b/linked_list.h @@ -340,6 +340,14 @@ void linked_list_remove(struct LinkedList*& node, void(*free_func)(T) = nullp free(node); } +template +void linked_list_remove_before(struct LinkedList* node, void(*free_func)(T) = nullptr) { + if (!node) return; + while (node->prev) { + linked_list_remove(node->prev, free_func); + } +} + template struct LinkedList* linked_list_tail(struct LinkedList* list) { if (!list) return nullptr;