This seems to be an awkward way to store the information, the part where both you track students to courses and courses to students. Anyway, here is some code/pseudocode to give you an idea of how to do it
Code:
void unreg_student(slist *students,int id, int number)
do a (linear) search for the given student id, 'id'
do a (linear) search for the given course number, 'number', on the student struct found in the previous step
remove this course from the list, using a "standard" way to delete items from a linked list
(i.e. remove the "curr" item and fix the links so that prev->next points to curr->next, opposed to prev->next pointing to curr as it does now)
finally remove this student from this list of courses