• 大小: 6KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签: 路由算法  

资源简介

编程实现简单网络拓扑的链路状态路由算法。 结点之间的连接关系固定; 链路开销可以由用户设定。 链路状态算法的实现:

资源截图

代码片段和文件信息

//VC++
#include //可以不写 
#include  //文件输入输出头文件 
#include //防止编译exit()时出错 
#include // 因为使用了setw()语句
#include

using namespace std;

const int INFINITY=10000;
const int OK=1; 
const int updateTime=10;


void createGraph(int *arcs[]int & num){
//创建并初始化网络拓扑图 
cout<<“请输入路径的权值(用邻接矩阵表示拓扑图的方式):“< for (int i=0;i arcs[i]=new int [num];
for(int j=0;j cin>>arcs[i][j];
}
}


void printFileGraph(int *arcs[]int num){
//把拓扑图中的邻接矩阵保存到文件中
ofstream outfile(“Graph.txt“ios::out|ios::trunc);
if(! outfile){
cout<<“打开文件时出现错误!“< exit(1);//退出程序 
}


outfile<<“拓扑图的邻接矩阵“< for(int i=0;i for(int j=0;j outfile< if((j+1)%num==0)
outfile< }
outfile<<“注:“< outfile< cout<<“拓扑图已经存储在当前目录下Graph.txt文件中“< outfile.close();
}


void initRoute(int * R []int RL[]int vNum){
//路由表数据复位 
for(int i=0;i RL[i]=INFINITY;
R[i]=new int[vNum];
for(int j=0;j R[i][j]=-1;
}//outside for
}//initRoute


void updateRouteLen(int R1[] int R2[]int destint num){
//用路径R2给R1赋值   
for(int i=0;i R1[i]=R2[i];

for(int j=0;j if (R1[j]==-1){
R1[j]=dest;
break;
}
}//for
}//updateRoute


void Dijkstra(int * arcs[]int * R[]int RL[]int vexnum){
//迪杰斯特拉算法
int v0;  //定义源节点 
bool * visit=new bool [vexnum];//已经确定最短路径的节点的集合 
cout<<“请输入起始节点:“;
cin>>v0;
cout<
for(int cnt=0;cnt visit[cnt]=FALSE;
RL[cnt]=arcs[v0][cnt];

if(RL[cnt] R[cnt][0]=v0;
R[cnt][1]=cnt;
}
}  //for
RL[v0]=0;//源节点的标志 
visit[v0]=TRUE;  //初始化已经找到最短路径的点集合 
 
for(int i=1;i int min=INFINITY;
int v=v0;
for(int j=0;j if(!visit[j])
if(RL[j] v=j;
min=RL[j]; 
}
visit[v]=TRUE;    //离v0顶点最近的v加入到s集
for(int k=0;k if(!visit[k]&&(min+arcs[v][k] //modify shortest r[j] and RL[j]
RL[k]=min+arcs[v][k];
updateRouteLen(R[k]R[v]kvexnum); 
}//if
}//for
delete[] visit;
visit=NULL;
}//Dijkstra


void printRoute(int * R[]int RL[] int vNum){
//打印得到的最短路径表 
ofstream outfile(“Route.txt“ios::out|ios::trunc);
if(! outfile){
cout<<“打开文件时出现错误!“< exit(1);
}

for(int dest=0;dest

评论

共有 条评论