usaa24/cv4/a_train.c
2024-10-24 19:26:06 +02:00

77 lines
1.9 KiB
C

#include "a_train.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct car* add_car(struct car* first, const char* target) {
struct car* new_car = (struct car*)malloc(sizeof(struct car));
if (new_car == NULL) {
printf("Chyba: Nepodarilo sa alokovať pamäť pre nový vozeň.\n");
return first;
}
strncpy(new_car->value, target, SIZE);
new_car->next = NULL;
if (first == NULL) {
return new_car;
}
struct car* temp = first;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_car;
return first;
}
void print_train(struct car* first) {
if (first == NULL) {
printf("Vlak je prazdny.\n");
return;
}
struct car* temp = first;
while (temp != NULL) {
printf("Cielova stanica: %s\n", temp->value);
temp = temp->next;
}
}
void cancel_train(struct car* first) {
struct car* temp;
while (first != NULL) {
temp = first;
first = first->next;
free(temp);
}
printf("Vsetky vozne boli zrusene.\n");
}
struct car* clear_train(struct car* first, const char* target) {
struct car* current = first;
struct car* previous = NULL;
while (current != NULL) {
// Porovnanie hodnoty cielovej stanice
if (strcmp(current->value, target) == 0) {
// Ak sa cielova stanica zhoduje, odstráni vozeň
if (previous == NULL) {
// Ak je to prvý vozeň
first = current->next;
} else {
previous->next = current->next;
}
struct car* temp = current;
current = current->next;
free(temp);
} else {
// Ak sa nezhoduje, prejde na nasledujúci vozeň
previous = current;
current = current->next;
}
}
return first;
}