typedef struct LIST_ENTRY_TAG {

    struct LIST_ENTRY_TAG *next;

    struct LIST_ENTRY_TAG *prev;

    int data;

} LIST_ENTRY;


LIST_ENTRY head;


...


LIST_ENTRY *add_list_entry(LIST_ENTRY *head, int data) {

    LIST_ENTRY *new_entry = new LIST_ENTRY;

    new_entry->next = head;

    new_entry->prev = head->prev;

    new_entry->prev->next = new_entry;

    head->prev = new_entry;

    return new_entry;

}


void delete_list_entry(LIST_ENTRY *entry) {

    entry->prev->next = entry->next;

    entry->next->prev = entry->prev;

    delete entry;

}