#include #include"a_train.h" struct car* add_car(struct car* first,const char* target) { struct car* ret = first; struct car* nc=(struct car*) malloc(sizeof(struct car)); strcpy(nc->value, target); nc->next=NULL; if(first) { while(first->next!=NULL) { first=first->next; } first->next=nc; return ret; } first=nc; return first; } void print_train(struct car* first) { if(first==NULL) { return; } do { printf("%s", first->value); first=first->next; if(first){ printf("->"); } }while(first!=NULL); } void cancel_train(struct car* first) { struct car* t; while(first!=NULL) { t=first; first=first->next; free(t); } } struct car* clear_train(struct car* first, const char* target) { struct car* t; //змінна для збереження кого видаляти if(first==NULL || target==NULL) { return first; } //голова == таргет - видаляємо лише перший while(strcmp(first->value, target)==0) //поки рядки однакові { t=first; first=first->next; free(t); if(first==NULL) { return NULL; } } //голова не таргет do { if(strcmp(first->next->value, target)==0) { t=first; first=first->next; free(t); } else { first=first->next; } } while(first); return first; }