#include
#include
#define infin 65535
#define max_vertex_num 20
int final[6]
;typedef
enum
graphkind;
//有向圖,有向網,無向圖,無向網
typedef
struct arccell
arccell,adjmatrix[max_vertex_num]
[max_vertex_num]
;typedef
struct
mgraph;
intcreatedg
(mgraph &g)
intcreatedn
(mgraph &g)
intcreateudg
(mgraph &g)
intlocatevex
(mgraph &g,
char v)
if(i==g.vexnum)
return
65535;}
intcreateudn
(mgraph &g)
g.vexnum =6;
g.arcnum =10;
int i,j;
for(i=
0;i)for
(i=0
;i)for
(j=0
;j < g.vexnum;j++
) g.arcs[i]
[j].adj=infin;
g.arcs[0]
[1].adj=5;
g.arcs[2]
[0].adj=8;
g.arcs[0]
[3].adj=7;
g.arcs[5]
[0].adj=3;
g.arcs[1]
[2].adj=4;
g.arcs[3]
[2].adj=5;
g.arcs[4]
[3].adj=5;
g.arcs[5]
[4].adj=1;
g.arcs[3]
[5].adj=6;
g.arcs[2]
[5].adj=9;
return1;
}int
creategraph
(mgraph &g)
}void
shortpath_djt
(int p[
6],mgraph &g,
int v0,
int d)
} d[v0]=0
;//v0屬於s集
final[v0]=1
;//開始主迴圈,每次求得v0到某個頂點的最短路徑並增加v到s集
for(i =
1;i) final[v]=1
;//距離v0最近的v頂點加入s集
for(w=
0;w)//更新當前最短路徑及距離 if(
!final[w]
&&(min+g.arcs[v]
[w].adj}}
intmain()
}
C 迪傑斯特拉演算法
網上有許多版本的,自己還是寫乙個理解點 dijkstra.cs public class dijkstra public void initweights list weights public listfind string start,string end var s nodes.where x...
迪傑斯特拉演算法
if object id t test is not null drop table t test gocreate table dbo t test id int identity 1,1 not null primary key,自增字段,無意義 header varchar 500 第一點的名...
迪傑斯特拉演算法
dijkstra 迪傑斯特拉 演算法是典型的最短路徑路由演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法 能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。dijkstra演算法是很有代表性的最短...