usaa24/cv4/a_train.h
2024-10-24 19:02:50 +02:00

75 lines
1.5 KiB
C

#include <string.h>
#include <stdio.h>
#ifndef TRAIN_H
#define TRAIN_H
#define SIZE 100
/**
* Jeden vozen vlaku
*/
struct car {
/**
* Nazov cielovej stanice
*/
char value[SIZE];
/**
* Smenik na dalsi vozen
*/
struct car* next;
};
struct car* add_car(struct car* first, const char* target) {
// Vytvorenie noveho vozna
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;
}
// Inicializacia hodnot
strncpy(new_car->value, target, SIZE);
new_car->next = NULL;
// Ak vlak neexistuje, novy vozen sa stane prvym
if (first == NULL) {
return new_car;
}
// Najdenie posledneho vozna
struct car* temp = first;
while (temp->next != NULL) {
temp = temp->next;
}
// Pridanie noveho vozna na koniec
temp->next = new_car;
return first;
}
/**
* Vypise vsetky vozne vo vlaku
*
* @arg smernik na prvy vozen
*/
void print_train(struct car* first);
/**
* Zrusenie vsetkych voznov vo vlaku.
* @arg smernik na prvy vozen
*/
void cancel_train(struct car* first);
/**
* Vyradenie vsetkych voznov, ktorych cielova stanica je target
*
* @arg smernik na prvy vozen
* @arg cielova stanica, ktora sa ma vyradit z vlaku.
* @return smernik na novy prvy vozen
*
*/
struct car* clear_train(struct car* first,const char* target);
#endif // TRAIN_H