refresh
This commit is contained in:
parent
53f048b481
commit
fe5d06ab4a
27
du4/main.c
Normal file
27
du4/main.c
Normal 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.
36
du4/train.c
36
du4/train.c
@ -49,15 +49,39 @@ void print_train (struct car* first) {
|
|||||||
|
|
||||||
void cancel_train (struct car* first) {
|
void cancel_train (struct car* first) {
|
||||||
struct car* current = first;
|
struct car* current = first;
|
||||||
while (current ! = NULL) {
|
while (current !=NULL) {
|
||||||
struct car* next_one = current->next;
|
struct car* next_one = current->next;// запоминаем следующий вагон
|
||||||
memset(current->value, 0, SIZE);
|
memset(current->value, 0, SIZE);
|
||||||
free(current);
|
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
BIN
du4/train.exe
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user