[computer networks experiments]router algorithms---dijkstra

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

source file:

#include <iostream.h>

#define M 100

#define n 7 //定义成7是为了看起来方便,这样就可以用a[6]来表示第六个点

int min(int a,int b)

{

int c;

if(a>b) c=b;

else c=a;

return c;

}

void main()

{

int i,j,k;

//initial(N);

int N[n];

N[1]=1; //等于1就表示节点1在集合N中;N[i]=1表示i点在集合N中

//initial(L);

int L[n][n]={ //节点距离矩阵

{0 },

{0,0,2,5,1,M,M}, //节点1

{0,2,0,3,2,M,M},

{0,5,3,0,3,1,5},

{0,1,2,3,0,1,4}, //节点4

{0,M,M,1,1,0,2},

{0,M,M,5,4,2,0}

}; //节点距离矩阵输入结束

//initial[S]

int S[n][n];

for(i=2;i<n;i++)

{

S[1][i]=L[1][i];

}

for(j=2;j<n;j++)

{

N[j]=1; //如果点不在N中,就加入到N中

for(k=2;k<n;k++) //修改不在N中的节点的S值

{

if(N[k]==1)

S[j][k]=S[j-1][k];

else

S[j][k]=min(S[j-1][k],S[j-1][j]+L[j][k]);

}

}

for(i=1;i<7;i++)

{

for(j=2;j<7;j++)

cout<<S[i][j]<<",";

cout<<endl;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有