From 4130c229607144f2ac3ed4d002b3a3fb025bad26 Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 18 Nov 2024 17:43:08 +0100 Subject: [PATCH] Initializacia --- cv6/a_station.c | 167 ++++++++++++++---------------------------------- 1 file changed, 48 insertions(+), 119 deletions(-) diff --git a/cv6/a_station.c b/cv6/a_station.c index a86b4df..c117b1a 100644 --- a/cv6/a_station.c +++ b/cv6/a_station.c @@ -1,143 +1,72 @@ +#include "a_train.h" #include -#include "a_station.h" #include #include -struct station* create_station(){ - struct station* station = (struct station*)calloc(1,sizeof(struct station)); - station->tracks = (struct car**)calloc(STATION_SIZE, sizeof(struct car*)); - station->track_count = STATION_SIZE; - return station; -} +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); -void destroy_station(struct station* station){ -<<<<<<< HEAD - if (!station) return; - - for (int i = 0; i < station->track_count; ++i) { -======= - for (int i = 0; i < station->track_count; i++) { ->>>>>>> 2f4bf820c1657cb30626d282fd1907d4428dd2e7 - struct car* current = station->tracks[i]; - while (current) { - struct car* temp = current; + if (last != NULL) { + struct car* current = last; + while (current->next != NULL) { current = current->next; - free(temp); } + current->next = newcar; + } else { + last = newcar; + return last; } - free(station->tracks); - free(station); + + return first; } -int select_track(struct station* station, const char* target){ -<<<<<<< HEAD - int sum = 0; - while (*target) { - sum += *target++; -======= - size_t length = strlen(target); - int sum = 0; - for (size_t i = 0; i < length; i++) { - sum += target[i]; ->>>>>>> 2f4bf820c1657cb30626d282fd1907d4428dd2e7 +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; + } } - return sum % station->track_count; } -void add_target_capacity(struct station* station,const char* target, int capacity){ -<<<<<<< HEAD - int index = select_track(station, target); - struct car* current = station->tracks[index]; -======= - int track = select_track(station, target); - struct car* current = station->tracks[track]; ->>>>>>> 2f4bf820c1657cb30626d282fd1907d4428dd2e7 - - while (current) { - if (strcmp(current->value, target) == 0) { - current->capacity += capacity; - return; - } +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; } -<<<<<<< HEAD - struct car* new_car = (struct car*)malloc(sizeof(struct car)); - if (!new_car) return; + struct car* current = first; + struct car* previous = NULL; - strncpy(new_car->value, target, TARGET_SIZE - 1); - new_car->value[TARGET_SIZE - 1] = '\0'; // Ensure null termination - new_car->capacity = capacity; - new_car->next = station->tracks[index]; - station->tracks[index] = new_car; -} + while (current != NULL && strcmp(current->value, target) == 0) { + struct car* temp = current; + first = current->next; + current = first; + free(temp); + } -int get_target_capacity(struct station* station,const char* target){ - int index = select_track(station, target); - struct car* current = station->tracks[index]; -======= - struct car* new_car = malloc(sizeof(struct car)); - strncpy(new_car->value, target, TARGET_SIZE - 1); - new_car->value[TARGET_SIZE - 1] = '\0'; - new_car->capacity = capacity; - new_car->next = station->tracks[track]; - station->tracks[track] = new_car; -} - -int get_target_capacity(struct station* station, const char* target) { - int track = select_track(station, target); - struct car* current = station->tracks[track]; ->>>>>>> 2f4bf820c1657cb30626d282fd1907d4428dd2e7 - - while (current) { + while (current != NULL) { if (strcmp(current->value, target) == 0) { - return current->capacity; - } - current = current->next; - } -<<<<<<< HEAD - return 0; -} - -int count_targets(struct station* station){ - int count = 0; - for (int i = 0; i < station->track_count; ++i) { - struct car* current = station->tracks[i]; - while (current) { - ++count; -======= - - return 0; -} - -int count_targets(struct station* station) { - int count = 0; - for (int i = 0; i < station->track_count; i++) { - struct car* current = station->tracks[i]; - while (current) { - count++; ->>>>>>> 2f4bf820c1657cb30626d282fd1907d4428dd2e7 + previous->next = current->next; + free(current); + current = previous->next; + } else { + previous = current; current = current->next; } } - return count; -} -<<<<<<< HEAD -int count_capacity(struct station* station){ - int total_capacity = 0; - for (int i = 0; i < station->track_count; ++i) { -======= -int count_capacity(struct station* station) { - int total_capacity = 0; - for (int i = 0; i < station->track_count; i++) { ->>>>>>> 2f4bf820c1657cb30626d282fd1907d4428dd2e7 - struct car* current = station->tracks[i]; - while (current) { - total_capacity += current->capacity; - current = current->next; - } - } - return total_capacity; + return first; } -