#include "a_train.h" #include #include #include struct car* add_car(struct car* first, const char* target) { struct car* last = first; struct car* newcar = calloc(1, sizeof(struct car)); strcpy(newcar->value, target); if (last != NULL) { struct car* current = last; while (current->next != NULL) { current = current->next; } current->next = newcar; } else { last = newcar; return last; } return first; } void print_train(struct car* first) { if(first != NULL){ struct car* current = first; while(current->next != NULL){ printf("%s\n", current->value); current = current->next; } } } void cancel_train(struct car* first) { // struct car* current = first; // while(first != NULL){ // current = current->next; // free(first); // first = current; // } } struct car* clear_train(struct car* first, const char* target) { if (first = NULL){ return NULL; } struct car* current = first, new_first = first; if (first != NULL){ if(strcmp(first->value, target) == 0){ new_first = new_first->next; free(first); first = new_first; } } while (first->next != NULL) { current = first->next; if (strcmp(current->value, target) == 0) { first->next = current->next; free(current); } else { first = current; } } return new_first; }