Your code could use some comments. It's not immediately clear what the purpose of some of your data members is, e.g. add, del1. The easier you make it for us to understand your code, the more likely people are to take the time and effort to look at it.
I would suggest to do this without add and del1. The more variables are involved the more problems they may cause.
Line 72: del1 is deleted and then used afterward.
Line 83: del1 is deleted but used as next the line above. I would guess you mean deltemp->next = del1->next;
This is the way to unlink del1 from a singly linked list. The pointer to del1 will be overwritten with the pointer of the following element (null if there is none). Which effectively removes del1 from the list.