前天晚上一个同学急着要我帮他写个程序,说看不大懂~~,我以为是很深奥的东西,拿来看了一下,发现是关于网络rip协议的矩阵向量算法~,挺简单的~
代码是:
#define M 10
#define N 10
#include<iostream.h>
struct node{
int metric;
int from;
};//定义路由节点
node routData[M][N];//存储路由表
void initData()//初始化路由表
{
int i,j;
cout<<"Please input the start routine:"<<endl;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
cin>>routData[M][N].metric;
routData[M][N].from=i;
}
}
void rout(int recv,int send)//根据路由表寻找节点的路由路径
{
int i;
int distance;
for(i=0;i<M;i++)
{
if(routData[send][i].metric>0)
{
if(routData[recv][i].metric<0)
{
routData[recv][i].metric=routData[send][i].metric + routData[recv][send].metric;
routData[recv][i].from=send;
}
else
{
distance=routData[recv][i].metric+routData[send][i].metric;
if(routData[recv][i].metric>distance)
{
routData[recv][i].metric=distance;
routData[recv][i].from=send;
}
}
}
}
}
void refresh()//刷新路由表
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
if(routData[i][j].metric>0)
rout(j,i);
}
}
void displayRout()//输出路由表
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
cout<<"start form "<<i<< " to "<<j;
if(routData[i][j].metric>=0)
cout<<" metric is : "<<routData[i][j].metric<<endl;
else
cout<<" have no rout!!"<<endl;
}
}
void main()
{
int i;
initData();
for(i=0;i<M;i++)
refresh();
displayRout();
}