While you traversing your list, you are doing it using pointer to nodes which is of type Double_node<Type> *
, which means that it was allocated somewhere and could be deleted with simple delete ptr
, but since you are using it also to get next element in list you have to be careful and remember it prematurely, so it should be something like:
Double_node<Type> *ptr_next = 0;
for (Double_node<Type> *ptr = head(); ptr != nullptr; ptr = ptr_next) {
ptr_next = ptr->next ();
if (ptr->retrieve() == obj){
if (ptr->previous_node)
ptr->previous_node->next_node = ptr->next();
ptr->next()->previous_node = ptr->previous();
count++;
list_size--;
delete ptr;
}
I believe that should do the trick.