diff --git a/list.c b/list.c old mode 100644 new mode 100755 diff --git a/main.c b/main.c index 6fdba572534dd219df2bd74305f3168cdebfb25f..ac4e09d44d60c313827cae85b928c7d48f2b9f0c 100755 --- a/main.c +++ b/main.c @@ -37,15 +37,18 @@ void delete (struct list *student_list) { scanf("%s", &array); struct list_elem *e; - for (e = list_begin(student_list); e != list_end(student_list); e = list_next(e)){ + for (e = list_begin(student_list); e != list_end(student_list);) { struct student *s = list_entry(e, struct student, elem); /*if the two arrays are equal we delete it and free memory*/ - if(strcmp(array, s->name)==0){ - struct list_elem* temp = e; - list_remove(e); + if (strcmp(array, s->name) == 0) { + struct list_elem *temp = e; + e = list_next(e); + list_remove(temp); free(s->name); free(s); + break; } + e = list_next(e); } } @@ -70,6 +73,7 @@ void quit (struct list *student_list) { free(s->name); free(s); } + exit(0); } int main() {