diff --git a/cv6/a_station.c b/cv6/a_station.c index 257f800..f56d75b 100644 --- a/cv6/a_station.c +++ b/cv6/a_station.c @@ -3,7 +3,8 @@ #include #include -struct station* create_station(){ + + struct station* create_station(){ struct station* station = (struct station*)calloc(1,sizeof(struct station)); station->tracks = (struct car**)calloc(STATION_SIZE, sizeof(struct car*)); station->track_count = STATION_SIZE; @@ -21,40 +22,38 @@ int select_track(struct station* station, const char* target) char t=0; while(target[i]!=0) { - t+=target[i]; + t+=target[i++]; } if(t<0) {t=-t;} - i=t%10; + i=t%10; - - return i; } -void add_target_capacity(struct station* station,const char* target, int capacity) +void add_target_capacity(struct station* station, const char* target, int capacity) { - int i=select_track(station, target); - - struct car *nwcar = (struct car*)calloc(STATION_SIZE, sizeof(struct car)); - nwcar->next=NULL; - strcpy(nwcar->value, target); - nwcar->capacity=capacity; - - if(station->tracks[i]==NULL) - { - station->tracks[i]=nwcar; + int i = select_track(station, target); + struct car* p = station->tracks[i]; + + while (p != NULL) + { + if (strcmp(p->value, target) == 0) + { + p->capacity = capacity; + return; + } + p = p->next; } - struct car* start = station->tracks[i]; - struct car* this = start; - while(this->next != NULL) - { - this=this->next; - } - this->next=nwcar; + struct car* new_car = (struct car*)calloc(1, sizeof(struct car)); + strcpy(new_car->value, target); + new_car->capacity = capacity; + new_car->next = station->tracks[i]; + station->tracks[i] = new_car; } + int get_target_capacity(struct station* station,const char* target) { int i=select_track(station, target); @@ -103,5 +102,3 @@ int count_capacity(struct station* station){ } return k; } - -