#include #include "struct.h" #include "remove.h" void linked_list_remove( struct linked_list* list, struct value* element, size_t link_offset) { ENTER; assert(list->head); struct link* link = (void*) element + link_offset; assert(link->in_set); if (link->prev) { struct link* prev_link = (void*) link->prev + link_offset; prev_link->next = link->next; } else { list->head = link->next; } if (link->next) { struct link* next_link = (void*) link->next + link_offset; next_link->prev = link->prev; } else { list->tail = link->prev; } link->prev = link->next = NULL; link->in_set = false; EXIT; }