- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息安全 _专业 1002_ 班 2012 年 12 月 20 日
姓名吴文珊
学号 _0909102525
一.实验题目
模拟距离向量路由算法的路由表交换过程, 演示每轮交换后路由
表的变化,动态生成网络拓扑图,从初始路由表开始,进行交换路由
表,演示每轮交换后的路由表的变化。 观察和讨论多少轮交换后路由
表稳定。
二.需求分析
本程序用 C编写,完成距离向量路由算法的模拟。
输入的形式与输出值的范围:输入时要求输入节点个数、初始网络拓扑图中边的条数(即:邻居节点的对数) ,节点名称、每条边的弧头、弧尾节点、边权值。名字定义为字符串形式,节点个数、边条数、边权值为整形变量;
输出的形式:输入信息后,程序输出每轮交换之后新的的路
由表
程序所能达到的功能:完成节点信息的输入、随机选取节点交换向量,并更新路由表, 显示经过多少轮交换路由表稳定,并停止交换。
测试数据:
节点个数: 4
边条数 :4
节点名称: a b c d
弧头 弧尾 权值
a b 3
b d 6
c a 2
d a 6
最终距离向量矩阵如下:
a b c d
a 0 3 2 6
b 3 0 5 6
c 2 5 0 8
d 6 6 8 0
三.概要设计
为了实现上述功能,须定义结构体的抽象数据类型
本程序包含了 个函数:
void visit(VertexType ver)// 访问顶点的函数
void input(VertexType ver) // 输入顶点信息的函数
int LocateVex(MGraph G,VertexType u)// 查找顶点 u, 并返回
void CreateDN(MGraph G)// 构造有向网 G
GetVex(MGraph G,int v)// 得到图中顶点 V
void Display(MGraph G)// 显示路由表
void ShortestPath_Floyd() 文档由风行播放器 /
暴风影音
2014: /
整理
各函数间关系如下:
CreateDN()
LocateVex()
visit()
Main() Display()
GetVex()
ShortestPath_Floyd()
四.详细设计
实现概要设计中定义的所有的数据类型, 对每个操作给出伪码算
法。对主程序和其他模块也都需要写出伪码算法。
节点类型
struct VertexType//最简单的顶点信息类型 (只有顶点名称 )
{
char name[MAX_NAME];// 顶点名称
char routers[MAX_VERTEX_NUM][MAX_NAME];// 定义最短路径中到目的
节点的上一跳
} ;
struct MGraph//图的结构
{
VertexType vexs[MAX_VERTEX_NUM];// 顶点向量 AdjMatrix arcs;// 邻接矩阵 (二维数组 )
int vexnum,arcnum;//图的当前顶点数和弧数
GraphKind kind; // 图的种类标志
} ;
typedef struct //边 (弧 )信息结构
{
VRType adj;//顶点关系类型,对带权图,表示权值
}
struct VertexType//最简单的顶点信息类型 (只有顶点名称 )
{
char name[MAX_NAME];// 顶点名称
char routers[MAX_VERTEX_NUM][MAX_NAME];// 定义最短路径中到目的节点的上一跳
} ;
struct MGraph//图的结构
{
VertexType vexs[MAX_VERTEX_NUM];// 顶点向量 AdjMatrix arcs;// 邻接矩阵 (二维数组 )
int vexnum,arcnum;//图的当前顶点数和弧数
GraphKind kind; // 图的种类标志
} ;
各功能函数伪码算法
main()
{
CreateDN(g);//构造有向网 g
for(i=0;ig.vexnum;i++)
g.arcs[i][i].adj=0;// 顶点到自身距离为 0
Display(g);// 输出有向网 g
ShortestPath_Floyd(g,p,d);//求每对顶点的最短路径
return 1;
}
void CreateDN(MGraph G)// 构造有向网 G
{
scanf(%d %d,G.vexnum,G.arcnum);
for(i=0;iG .vexnum;i++)// 构造顶点向量
input(G.vexs[i]); //输入节点名称
for(i=0;iG .vexnum;i++)// 初始化二维邻接矩阵
for(j=0;jG .vexnum;j++)
{
G.arcs
文档评论(0)