• 大小: 8KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-19
  • 语言: C/C++
  • 标签: 距离向量  DV  算法  

资源简介

实现了计算机网络中距离向量(DV)算法; 开发语言:C 开发环境:VC++6.0 内有整个工程文件,可直接运行

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#include “conio.h“
#define ROUTNUM 4

typedef struct
{
int dis; //记录距离
int from; //记录中间节点
}RoutNode;

RoutNode data[ROUTNUM][ROUTNUM];//节点表
void InitData(FILE* pfile); //从文件中读取路由表的初始信息
void OutputRoutData(); //输出路由表
void Communication(int recv int send); //向邻近节点发送自己的路由表信息
void Exchange(); //根据新路由表信息更新自己的路由表
void main()
{
int start end i j; //start开始节点,end目的节点
FILE *pfile;
pfile = fopen(“1.txt“ “r“);
if (pfile == NULL)//文件不存在,错误
{
printf(“文件打开错误,按任意键退出.\n“);
getch();
return;
}
else
InitData(pfile);//读取路由表信息
fclose(pfile);
printf(“\n路由表初始:\n“);
//OutputRoutData();
for (i = 0; i {
printf(“%c||“ i + 65);
for (j = 0; j < ROUTNUM; j++)
if (data[i][j].dis > 0 )//|| data[i][j].dis == 0
//if(data[i][j].dis > 9)
// printf(“<%c %d> “ j + 65 data[i][j].dis);
//else
printf(“<%c %d> “ j + 65 data[i][j].dis);
//else
// printf(“<%c -> “ j + 65);
printf(“\n“);
}//*/

for (i = 0; i < ROUTNUM; i++)
{
Exchange(); //更新路由表信息
}
printf(“\n路由表交换:\n“);
OutputRoutData(); //打印交换的路由表
while(1){
printf(“输入起始路由节点(%d-%d) : “ 0 ROUTNUM - 1);
scanf(“%d“  &start);
printf(“输入终点路由节点(%d-%d) : “ 0 ROUTNUM - 1);
scanf(“%d“ &end);
if (start == end || start < 0 || start > ROUTNUM-1 || end < 0 || end > ROUTNUM-1) //输入错误
{
printf(“\n输入错误,请按任意键退出\n“);
getch();
return;
}
else
{
int cur = start; //cur保存开始节点
int total = 0; //记录总的距离
if (data[start][end].dis < 0)
{
printf(“没有路由路径发现!\n“);
getch();
return;
} /*end of if*/

printf(“%c->“ cur + 65);
while (data[cur][end].from >= 0) //输出中间节点
{
total += data[cur][data[cur][end].from].dis;
printf(“%c->“ data[cur][end].from + 65);
cur = data[cur][end].from;

total += data[cur][end].dis;
printf(“%c\n总的路由距离 = %d“ end + 65 total);
printf(“\n“);
printf(“\n“);
printf(“\n“);
//printf(“\n“);
//getch();
//return;
}

}

void InitData(FILE* pfile)
{
char num[10];
int i = 0;
char c;
int m n;
fseek(pfile 0 0); //定位到文件头
for (m = 0; !feof(pfile) && m < ROUTNUM; m++)
{
for (n = 0; !feof(pfile) && n < ROUTNUM; n++)
{
while (!feof(pfile))
{
c = fgetc(pfile);
if (c == ‘‘)
{
num[i] = ‘\0‘; //添加字符串结束标志
data[m][n].dis = atoi(num); //字符串转换成整型
data[m][n].from = -1; //没有中间节点
i = 0; //准备读取下一个数
break;
}
else if ((c >= ‘0‘ && c <= ‘9‘) || c == ‘-‘)
{
num[i++] = c;

}

}
}

void OutputRoutData() //打印路由表
{
int i j;
printf(“   “);
for (i = 0; i < ROUTNUM; i++)
{
printf(“    %c   “ i + 65);
}
printf(“\n“);
for (i = 0; i < ROUTNUM; i++)
{
printf(“%c  “ i + 65);
for (j = 0; j < ROUTNUM; j++)
{
if (data[i][j].dis < 0)
printf(“  -“);
else
if(data[i][j].dis > 10 || data[i][j].dis == 1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-11-20 11:26  距离向量(DV)算法实现\
     文件          40  2013-11-18 22:25  距离向量(DV)算法实现\1.txt
     文件        4343  2013-11-19 09:56  距离向量(DV)算法实现\luyou.cpp
     文件        3389  2013-11-18 21:09  距离向量(DV)算法实现\luyou.dsp
     文件         518  2013-11-18 21:21  距离向量(DV)算法实现\luyou.dsw
     文件       41984  2013-11-19 09:57  距离向量(DV)算法实现\luyou.ncb
     文件       48640  2013-11-19 09:57  距离向量(DV)算法实现\luyou.opt
     文件        1137  2013-11-19 09:56  距离向量(DV)算法实现\luyou.plg

评论

共有 条评论