From 78b02ae136c61518328dbd2361c508c3c7c43c5d Mon Sep 17 00:00:00 2001 From: Mykola Syniavskyi Date: Thu, 6 Nov 2025 17:51:02 +0000 Subject: [PATCH] =?UTF-8?q?P=C5=99idat=20du4/a=5Ftrain.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- du4/a_train.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 du4/a_train.c diff --git a/du4/a_train.c b/du4/a_train.c new file mode 100644 index 0000000..d2eab6f --- /dev/null +++ b/du4/a_train.c @@ -0,0 +1,74 @@ +#include +#include +#include +#include "a_train.h" + +struct car* add_car(struct car* first, const char* target) { + struct car* new_car = (struct car*)malloc(sizeof(struct car)); + if (!new_car) { + fprintf(stderr, "Chyba: nepodarilo sa alokovat pamat pre novy vozen.\n"); + return first; + } + + strncpy(new_car->value, target, SIZE - 1); + new_car->value[SIZE - 1] = '\0'; + new_car->next = NULL; + + if (first == NULL) { + return new_car; + } + + struct car* current = first; + while (current->next != NULL) { + current = current->next; + } + current->next = new_car; + + return first; +} + +void print_train(struct car* first) { + if (first == NULL) { + printf("Vlak je prazdny.\n"); + return; + } + + struct car* current = first; + while (current != NULL) { + printf("%s\n", current->value); + current = current->next; + } +} + +void cancel_train(struct car* first) { + struct car* current = first; + while (current != NULL) { + struct car* next = current->next; + free(current); + current = next; + } +} + +struct car* clear_train(struct car* first, const char* target) { + struct car* current = first; + struct car* prev = NULL; + + while (current != NULL) { + if (strcmp(current->value, target) == 0) { + struct car* to_delete = current; + if (prev == NULL) { + first = current->next; + current = first; + } else { + prev->next = current->next; + current = current->next; + } + free(to_delete); + } else { + prev = current; + current = current->next; + } + } + + return first; +}