Dijkstra 算法 C 语言实现
#include
#include
2008-08-26 12:07
#define INFINITY 1000000000
#define MAX_NODES 1024
int n,dist[MAX_NODES][MAX_NODES];
//最大距离
//最大节点数
//dist[i][j]表示从 i 到 j 的距离
void shortest_path(int s, int t, int path[])
{
struct state
{
int predecessor; //前驱节点
int length;
enum {permanent, tentative} label;
//到起始点的距离
}state[MAX_NODES];
int i,k,min;
struct state * p;
for(p=&state[0]; p<&state[n]; p++)
{
p->predecessor = -1;
p->length = INFINITY;
p->label = tentative;
}
state[t].length = 0;
state[t].label = permanent;
k = t;
do
{
//k 是当前工作节点
for(i=0; ik=0;
min=INFINITY;
for(i=0; i=0);
}