資料結構 Floyd

2021-07-25 11:58:20 字數 1018 閱讀 5028

//這個演算法比較好理解。

#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...