c語言Dijkstra演算法

2021-10-10 09:38:45 字數 1360 閱讀 5943

#include

/dijkstra演算法:解決最短路徑問題,從乙個初始點v0出發,設定lowcost陣列,記錄初始點到每乙個頂點的最短路徑,設定path陣列

記錄初始點到每個點最短路徑所經過的每乙個點,設定visit陣列,記錄已經選入lowcost陣列的點設定為 1 ,下次經過不再選中。

思想:選擇初始點v,遍歷每個點,若兩個點之間存在路徑,記錄權值到lowcost陣列,然後對每個點進行判斷,每次挑選乙個最小權值進入lowcost陣列

並更新最小邊/

#define n 7

#define inf 1000

typedef

struct

vertextype;

typedef

struct

mgraph;

void

dijkstra

(mgraph g,

int lowcost,

int path,

int v)

else

path[i]

=v;

visit[i]=0

; lowcost[i]

=g.edges[v]

[i];}

path[v]=-

1;visit[v]=1

;for

(i=0

;i++i)}

visit[u]=1

;for

(k=0

;k++k)}}

}void

create

(mgraph *g)}}

g->edges[0]

[1]=

4;g->edges[0]

[2]=

6;g->edges[0]

[3]=

6;g->edges[1]

[4]=

7;g->edges[1]

[2]=

1;g->edges[2]

[4]=

6;g->edges[2]

[5]=

4;g->edges[3]

[2]=

2;g->edges[3]

[5]=

5;g->edges[4]

[6]=

6;g->edges[5]

[4]=

1;g->edges[5]

[6]=

8;}void

print

(int path,

int v)

stack[

++top]

=v;while

(top!=-1

)}intmain()

Dijkstra演算法(C語言)

dijkstra演算法 1.定義概覽 dijkstra 迪傑斯特拉 演算法是典型的單源最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra 演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細...

dijkstra演算法 C語言 鄰接表

用來求單源最短路徑 ss和u兩個陣列,ss存放已計算完的頂點,u存放未計算完的頂點 dis欄位標識到此點的距離 步驟1 初始化,第乙個點dis 0,後面的點dis 1000 2 迴圈n次,n為頂點數 2.1 從u中取出乙個dis最小的頂點,放入ss,從u中刪除這個頂點 2.2 設取出的頂點為v,遍歷...

Dijkstra演算法 c語言實現

dijkstra 迪傑斯特拉 演算法是典型的最短路徑路由演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法 能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。dijkstra演算法是很有代表性的最短...