资源简介
实现了计算机网络中距离向量(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
- 上一篇:简单的通讯录程序 c++
- 下一篇:c++ qt 静态函数中发信号
相关资源
- 永磁同步电机的FOC控制算法
- Proteus仿真:PID算法输出.rar
- 一个模糊PID温度控制算法源代码
- 经典滤波算法
- KMP算法C语言程序
- SVM算法实现(源码+文档)
- 算法A律U律实现
- 人工蜂群算法.docx
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
- 烟花优化算法(c语言版)
- c++常用游戏算法及数据结构设计
- 深度学习算法地图
- 扫描线多边形填充算法实现
- 基于改进的fcm算法的图像分割vc++
- TLV解析算法
- 《Data Structures and Algorithm Analysis in C
- TOA/AOA定位算法C语言代码
- 算法帝国pdf
- 算法_C语言的实现完整版
- 数值分析算法程序设计 C++实现
评论
共有 条评论