diff --git a/cv5/a_train.c b/cv5/a_train.c index 0bef6ec..87a7a4c 100644 --- a/cv5/a_train.c +++ b/cv5/a_train.c @@ -62,25 +62,24 @@ struct car* clear_train(struct car* first, const char* target) { return first; } } + struct car* temp = first; struct car* prev = first; - while(prev->next!= NULL){ - int x = strcmp(prev->next->value, target); - if(x == 0){ - struct car* third = prev->next->next; - free(prev->next); - prev->next = third; - prev->next->next = NULL; - return first; - } - prev = prev->next; + while(temp != NULL){ + int x = strcmp(temp->value, target); + if(x != 0){ + prev = temp; + temp = temp->next; } - int x = strcmp(prev->next->value, target); - if(x == 0){ - free(prev->next); - prev->next = NULL; - return first; - + else{ + break; } + + } + if(temp == NULL){ + return 0; + } + prev->next = temp->next; + free(temp); return first; - + }