Update cv4/a_train.c
This commit is contained in:
parent
1f8fd88c1d
commit
64d9d7bfa3
111
cv4/a_train.c
111
cv4/a_train.c
@ -1,18 +1,111 @@
|
|||||||
#include "a_train.h"
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#define SIZE 50
|
||||||
|
|
||||||
struct car* add_car(struct car* first,const char* target) {
|
|
||||||
return NULL;
|
struct car
|
||||||
|
{
|
||||||
|
char value[SIZE]; // Cieľová stanica
|
||||||
|
struct car* next; // Ďaľší záznam, môže byť NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
struct car* add_car(struct car* first,const char* target)
|
||||||
|
{
|
||||||
|
struct car* nc=(struct car*) malloc(sizeof(struct car));
|
||||||
|
strcpy(nc->value, target);
|
||||||
|
nc->next=NULL;
|
||||||
|
|
||||||
|
if(first)
|
||||||
|
{
|
||||||
|
while(first->next!=NULL)
|
||||||
|
{
|
||||||
|
first=first->next;
|
||||||
|
}
|
||||||
|
first->next=nc;
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
first=nc;
|
||||||
|
|
||||||
|
return first;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_train(struct car* first) {
|
void print_train(struct car* first)
|
||||||
|
{
|
||||||
|
if(first==NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
printf("%s -> ", first->value);
|
||||||
|
first=first->next;
|
||||||
|
}while(first->next!=NULL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancel_train(struct car* first) {
|
void cancel_train(struct car* first)
|
||||||
|
{
|
||||||
|
struct car* t;
|
||||||
|
while(first!=NULL)
|
||||||
|
{
|
||||||
|
t=first;
|
||||||
|
first=first->next;
|
||||||
|
free(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct car* clear_train(struct car* first, const char* target)
|
||||||
|
{
|
||||||
|
struct car* t; //змінна для збереження кого видаляти
|
||||||
|
|
||||||
|
if(first==NULL || target==NULL)
|
||||||
|
{
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
//голова == таргет - видаляємо лише перший
|
||||||
|
while(strcmp(first->value, target)==0) //поки рядки однакові
|
||||||
|
{
|
||||||
|
t=first;
|
||||||
|
first=first->next;
|
||||||
|
free(t);
|
||||||
|
if(first==NULL)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//голова не таргет
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if(strcmp(first->next->value, target)==0)
|
||||||
|
{
|
||||||
|
t=first;
|
||||||
|
first=first->next;
|
||||||
|
free(t);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
first=first->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(first);
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
struct car* train = NULL;
|
||||||
|
train = add_car(train,"Presov");
|
||||||
|
train = add_car(train,"Bratislava");
|
||||||
|
train = add_car(train,"Levoca");
|
||||||
|
train = add_car(train,"Spiska Nova Ves");
|
||||||
|
print_train(train);
|
||||||
|
clear_train(train,"Levoca");
|
||||||
|
print_train(train);
|
||||||
|
cancel_train(train);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct car* clear_train(struct car* first, const char* target) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user