There are so many things wrong here that I don't know wherte to begin. However, this code:
delete tmp;
tmp = current_ptr;
is causing your problem. Actually, the nextCell of the list never is set to 0 so you delete what you think is an allocation but isn't. Then you crash.
If you are trying to write a linked list as a homework assignment, then this is the wrong way to go. That is, a list presupposes a list class and a list has nodes (cells) so that presupposes a cell class. You can use structs but all of the data members must be private.
Next, a cell does not delete a list. A list deletes a list and a cell only deletes data that it has specifically allocated using the new operator. That is, the cell does not delete subsequent cells. That's because a cell should have no concept of a list. The list class has the concept oc the list and the list class should have no concept of a cell. Any changes the list needs to make to a cell member is done by calling a cell method.
Personally, I would ditch this code and start over. This time paying more attention to encapsulation.