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