迪傑斯特拉演算法 C語言

2021-10-03 12:12:27 字數 1607 閱讀 5169

#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演算法是很有代表性的最短...