typedef struct roads road;
typedef struct city city;
道路があり、その端に 2 つの都市があるコードを実装しています。それらをファイルから読み取り、リンクします。構造は
NewYork 250km LosAngeles
LosAngeles 120km Florida
など、読み取った道路を格納する ROADS 配列を作成します。
struct city{
char* city_name;
}
struct roads{
int distance;
struct city *next_city,*previous_city;
struct roads **neigbors; // is this possible
}
size_t size = sizeof(road) + sizeof(city);
road *ROADS = malloc(size);
そのようなコードとこれに対する割り当ての欠点は何でしょうか。私は国の地図を作成することを考えています. すべての都市には近隣都市へのポインターが必要です。これにより、誰かが都市間の距離を尋ねたときに、私のプログラムがそれに答えることができるはずです。
char *city_name = malloc(sizeof(char)*length_of_name);
road *given_road = malloc(sizeof(road));
city *given_city = malloc(sizeof(city));
隣人の部分になると。
for(index = 0; given_road[index] != NULL; index++)
road *given_road->neighbors[index] = malloc(sizeof(city));
この部分と最後の部分は私が混乱した部分です。私の唯一のリンク参照は都市の名前です。
if(strcmp(ROADS[i]->next_city->city_name,ROADS[j]->previous_city->city_name)){
if(ROADS[i]->neighbors[0]==NULL)
ROADS[i]->next_city = ROADS[j]->previous_city;
ROADS[i]->neighbors[0] = ROADS[j]->previous_city;
ROADS[j]->neighbors[0] = ROADS[i]->next_city; //I totally don't know what am I doing here}
ROADS[i] の city_name の道路が ROADS[j] の city_name と同じである場合 (ロサンゼルスの例のように)、「NewYork 250km LosAngeles " 道路の隣には "LosAngeles 120km Florida" があり、その逆も同様です。「LosAngeles 500km Nebraska」のようなものがファイルから読み取られる場合、最初に言及した 2 つの道路には 2 つの隣接道路と 2 つのリンクも含まれます。ROADS 配列は、現在 3 つの道路構造を格納しています。もちろん、道路構造物を作成するときは、ROADS 配列にメモリを割り当てています。
ROADS = realloc(ROADS,i*size + size);
私が間違っているポイントはどこですか?このコードをさらに開発するためのヒントは完璧です。頭の中にあることを実行するために「検索する必要があるという概念」と言っても素晴らしいでしょう。