//這個演算法比較好理解。
#include
#define maxvex 10
#define infinity 655535
typedef struct
graphtype;
int located(graphtype*g,char v0);
void create(graphtype*g);
void floyd(graphtype*g);
int main(void)
printf("\n");
}floyd(&g);
return 0;
}int located(graphtype*g,char v0)
}return k;
}void create(graphtype*g)
printf("對應的點點及其他們直接的資訊:");
for(i=0;iarcnum;i++)
return;
}void floyd(graphtype*g)
for(k=0;kvexnum;k++)//轉接點
for(v=0;vvexnum;v++)
for(w=0;wvexnum;w++)
if(d[v][w]>d[v][k]+d[k][w])
for(v=0;vvexnum;v++)
printf("-> %c\n",g->vervexs[w]);//列印出終點}}
printf("請輸入要查詢兩點之間的最短距離:");
scanf("\n%c,%c",&a,&b);
m=located(g,a);
n=located(g,b);
k=p[m][n];//獲得第乙個路徑點點下標
printf("path: %c",g->vervexs[m]);//列印原點
while(k!=n)
printf("-> %c weight %d\n",g->vervexs[n],d[m][n]);//列印出終點
return ;
}
資料結構 Floyd演算法
演算法的思想 遍歷每個結點。然後以這個結點為中間結點來更新所有的結點。edge i,j min edge i k edge k j edge i j edge就是邊的長度 例如 image.png 首先 以 1 為中間結點,更新 1,2 1,3 1,4 1,5 1,6 2,3 2,4 等所有結點 其...
資料結構 考研 Floyd演算法
floyed 演算法與 dijkstra 演算法的思想完全一樣,遍歷整個鄰接矩陣,比較每一條邊可否加入迴圈中的兩邊之間來短接。floyed 演算法基於動態規劃演算法,可以允許有負權值,但不可以有帶負權值的邊存在。首先,初始化乙個鄰接矩陣,初始化乙個 dp 矩陣,初始化乙個頂點的前趨矩陣prev。de...
資料結構 Floyd演算法 順序儲存
include include structure.c define maxvertex 100 typedef char dis 輸出floyd中的矩陣 void printdis floyd amgraph g,int a maxvertex maxvertex printf n void pr...