- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最短路由选择
最短路由选择
实验报告
最短路径路由算法实现
实验报告
课 程 计算机网络
实验名称 最短路由选择
专业班级 信息0803
姓 名 白乾涛
学 号 0909082401
实验日期 2010.11.上旬
教师审批签字
二 零一零 年 十一月 二十 日
最短路径路由算法实现
一、实验目的和要求
1、实验目的
1、掌握最短路径路由算法的基本原理。
2、加强对最短路径算法的运用能力,能够采用一种编程语言实现最短路径路由算法。
2、实验要求
1、对界面是否为图形化界面不做要求,但要能够满足相对应的输入输出条件。
2、输入的起始节点A 和目标节点B 必须在拓扑图中,否则报错。
3、拓扑图中的每一个路径的权值能够进行修改。
4、在A 到B 不可达时,显示其不可达信息。
最短路径路由算法实现
二、实验关键数据结构及算法定义
1定义构造数据类型,存储结点名称和权值。
typedef struct ArCell
{
int adj; //路径长度
}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
int name;
int num;
}infotype;
typedef struct
{
infotype vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnum,arcnum;
}MGraph; MGraph b;
2以邻接矩阵存储图,同时实现了图的深度遍历
MGraph InitGraph(void)
{
MGraph G;
int i,j;
G.vexnum=6;
G.arcnum=6;
for(i=0;iG.vexnum;i++)
G.vexs[i].name=i;
for(i=0;iG.vexnum;i++)
for(j=0;jG.vexnum;j++)
G.arcs[i][j].adj=INFINITY;
G.arcs[0][1].adj=5;
G.arcs[0][5].adj=1;
G.arcs[1][2].adj=3;
G.arcs[1][3].adj=4;
G.arcs[2][3].adj=5;
G.arcs[3][4].adj=4;
G.arcs[4][5].adj=5;
G.arcs[5][6].adj=INFINITY;
for(i=0;iG.vexnum;i++)
for(j=0;jG.vexnum;j++)
G.arcs[j][i].adj=G.arcs[i][j].adj;
最短路径路由算法实现
return G;
}
3弗洛伊德算法,通过图的权值矩阵求出任意两点间的最短路径。
void Floyd(MGraph *G)
{
int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];
for(v=0;vG-vexnum;v++)
for(w=0;wG-vexnum;w++)
{
D[v][w]=G-arcs[v][w].adj;
for(u=0;uG-vexnum;u++)
p[v][w][u]=0;
if(D[v][w]INFINITY)
{
p[v][w][v]=1;p[v][w][w]=1;
}
}
for(u=0;uG-vexnum;u++)
for(v=0;vG-vexnum;v++)
for(w=0;wG-vexnum;w++)
if(D[v][u]+D[u][w]D[v][w])
{ D[v][w]=D[v][u]+D[u][w];
for(i=0;iG-vexnum;i++)
p[v][w][i]=p[v][u][i]||p[u][w][i];
}
while(fla
文档评论(0)