/* dijkstra1.c --- ダイクストラ法第1ステップ */ #include #include #include #define CrossingNumber 100 /* 交差点数=100 */ #define MaxName 50 /* 最大文字数50文字(半角) */ typedef struct { double x, y; /* 位置 x, y */ } Position; /* 位置を表す構造体 */ typedef struct { int id; /* 交差点番号 */ Position pos; /* 位置を表す構造体 */ double wait; /* 平均待ち時間 */ char jname[MaxName]; /* 交差点名 */ char ename[MaxName]; /* 交差点名 */ int points; /* 交差道路数 */ int next[5]; /* 隣接する交差点番号 */ double distance; /* 基準交差点までの距離:追加 */ int previous; /* 基準交差点からの経路(直前の交差点番号):追加 */ } Crossing; Crossing cross[CrossingNumber]; int map_read(char *filename) { // いままでとかわりません。 } /* サーチとソートの演習のprint_crossを改変,距離を表示できるよう改造してます */ void print_cross(int i) { int j; printf("交差点番号:%2d, 座標(%5.2lf,%5.2lf), 名前: %s ( %s ),", cross[i].id, cross[i].pos.x, cross[i].pos.y, cross[i].jname,cross[i].ename); printf("\n 目的地までの距離 %5.1lf, 直前の交差点 :%d, 待ち時間:%5.1lf, 隣接交差点 :%d個 ( ", cross[i].distance,cross[i].previous,cross[i].wait, cross[i].points); /* ここを改造 */ for(j=0; j