1 / 12
文档名称:

距离向量路由算法实验报告.doc

格式:doc   大小:42KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

距离向量路由算法实验报告.doc

上传人:bodkd 2020/5/24 文件大小:42 KB

下载得到文件列表

距离向量路由算法实验报告.doc

文档介绍

文档介绍:信息安全_专业1002_班2012年12月20日姓名吴文珊学号_0909102525实验题目模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化,动态生成网络拓扑图,从初始路由表开始,进行交换路由表,演示每轮交换后的路由表的变化。观察和讨论多少轮交换后路由表稳定。需求分析本程序用C编写,完成距离向量路由算法的模拟。(1)输入的形式与输出值的范围:输入时要求输入节点个数、初始网络拓扑图中边的条数(即:邻居节点的对数),节点名称、每条边的弧头、弧尾节点、边权值。名字定义为字符串形式,节点个数、边条数、边权值为整形变量;(2)输出的形式:输入信息后,程序输出每轮交换之后新的的路由表(3)程序所能达到的功能:完成节点信息的输入、随机选取节点交换向量,并更新路由表,显示经过多少轮交换路由表稳定,并停止交换。(4)测试数据:节点个数:4边条数:4节点名称:abcd弧头弧尾权值ab3bd6ca2da6最终距离向量矩阵如下:abcda0326b3056c2508d6680概要设计(1)为了实现上述功能,须定义结构体的抽象数据类型(2)本程序包含了个函数:voidvisit(VertexTypever)//访问顶点的函数voidinput(VertexType&ver)//输入顶点信息的函数intLocateVex(MGraphG,VertexTypeu)//查找顶点u,并返回voidCreateDN(MGraph&G)//构造有向网GGetVex(MGraphG,intv)//得到图中顶点VvoidDisplay(MGraphG)//显示路由表voidShortestPath_Floyd()文档由风行播放器音2014:函数间关系如下: CreateDN() LocateVex()visit()Main()Display()GetVex()ShortestPath_Floyd()详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。节点类型structVertexType//最简单的顶点信息类型(只有顶点名称){ charname[MAX_NAME];//顶点名称 charrouters[MAX_VERTEX_NUM][MAX_NAME];//定义最短路径中到目的节点的上一跳};structMGraph//图的结构{ VertexTypevexs[MAX_VERTEX_NUM];//顶点向量 AdjMatrixarcs;//邻接矩阵(二维数组) intvexnum,um;//图的当前顶点数和弧数 GraphKindkind;//图的种类标志};typedefstruct//边(弧)信息结构{ VRTypeadj;//顶点关系类型,对带权图,表示权值}structVertexType//最简单的顶点信息类型(只有顶点名称){ charname[MAX_NAME];//顶点名称 charrouters[MAX_VERTEX_NUM][MAX_NAME];//定义最短路径中到目的节点的上一跳};structMGraph//图的结构{ VertexTypevexs[MAX_VERTEX_NUM];//顶点向量 AdjMatrixarcs;//邻接矩阵(二维数组) intvexnum,um;//图的当前顶点数和弧数 GraphKindkind;//图的种类标志};(2)各功能函数伪码算法main(){ CreateDN(g);//构造有向网g for(i=0;i<;i++) [i][i].adj=0;//顶点到自身距离为0 Display(g);//输出有向网gShortestPath_Floyd(g,p,d);//求每对顶点的最短路径return1;}voidCreateDN(MGraph&G)//构造有向网G{scanf("%d%d",&,&);for(i=0;i<;i++)//构造顶点向量input([i]);//输入节点名称for(i=0;i<;i++)//初始化二维邻接矩阵for(j=0;j<;j++){ [i][j].adj=INFINITY;}for(k=0;k<;k++){ scanf("%s%s%d",,,&w);存入图中;} }voidDisplay(MGraphG){ for(i=0;i<;i++) visit(GetVex(G,i)); for(i=0;i<;i++) printf("%-8s",[i].name); for(j=0;j<;j++){