This commit is contained in:
Oleksandr Vyshniakov 2025-11-04 18:54:26 +01:00
parent 53f048b481
commit fe5d06ab4a
4 changed files with 57 additions and 6 deletions

27
du4/main.c Normal file
View File

@ -0,0 +1,27 @@
#include <stdio.h>
#include "train.h"
int main() {
struct car* vlak = NULL;
vlak = add_car(vlak, "Kosice");
vlak = add_car(vlak, "Presov");
vlak = add_car(vlak, "Bratislava");
vlak = add_car(vlak, "Kosice");
vlak = add_car(vlak, "Poprad");
printf("Povodny vlak:\n");
print_train(vlak);
vlak = clear_train(vlak, "Kosice");
printf("\nPo odstraneni 'Kosice':\n");
print_train(vlak);
cancel_train(vlak);
vlak = NULL;
printf("\nPo zruseni vlaku:\n");
print_train(vlak);
return 0;
}

Binary file not shown.

View File

@ -49,15 +49,39 @@ void print_train (struct car* first) {
void cancel_train (struct car* first) {
struct car* current = first;
while (current ! = NULL) {
struct car* next_one = current->next;
while (current !=NULL) {
struct car* next_one = current->next;// запоминаем следующий вагон
memset(current->value, 0, SIZE);
free(current);
current = next_one;;
current = next_one;; // переходим к следующему вагону
}
}
struct car* clear_train(struct car* first, const char* target) {
if (first == NULL) {
return NULL;
}
struct car* current = first; // текущий вагон
struct car* previous = NULL; // предыдущий вагон
while (current !=NULL) {
if (strcmp(current->value, target)==0) {
if (previous==NULL) {
struct car* new_start = current->next; //Сохраняем адрес второго вагона
free(current);
current = new_start; //Двигаем курсор на следующий вагон
first = new_start; //Обновляем начало поезда
continue;
}
} else {
previous->next = current->next;
free(current);
current = previous->next;
continue;
}
}
previous = current;
current = current->next;
}
int main() {
return 0;
}

BIN
du4/train.exe Normal file

Binary file not shown.