資源簡介
實現(xiàn)了計算機(jī)網(wǎng)絡(luò)中距離向量(DV)算法;
開發(fā)語言:C
開發(fā)環(huán)境:VC++6.0
內(nèi)有整個工程文件,可直接運行

代碼片段和文件信息
#include?“stdio.h“
#include?“stdlib.h“
#include?“conio.h“
#define?ROUTNUM?4
typedef?struct
{
int?dis; //記錄距離
int?from; //記錄中間節(jié)點
}RoutNode;
RoutNode?data[ROUTNUM][ROUTNUM];//節(jié)點表
void?InitData(FILE*?pfile); //從文件中讀取路由表的初始信息
void?OutputRoutData(); //輸出路由表
void?Communication(int?recv?int?send); //向鄰近節(jié)點發(fā)送自己的路由表信息
void?Exchange(); //根據(jù)新路由表信息更新自己的路由表
void?main()
{
int?start?end?i?j; //start開始節(jié)點,end目的節(jié)點
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? 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? {
Exchange(); //更新路由表信息
}
printf(“\n路由表交換:\n“);
OutputRoutData(); //打印交換的路由表
while(1){
printf(“輸入起始路由節(jié)點(%d-%d)?:?“?0?ROUTNUM?-?1);
scanf(“%d“??&start);
printf(“輸入終點路由節(jié)點(%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保存開始節(jié)點
int?total?=?0; //記錄總的距離
if?(data[start][end].dis?0)
{
printf(“沒有路由路徑發(fā)現(xiàn)!\n“);
getch();
return;
}?/*end?of?if*/
printf(“%c->“?cur?+?65);
while?(data[cur][end].from?>=?0) //輸出中間節(jié)點
{
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? {
for?(n?=?0;?!feof(pfile)?&&?n? {
while?(!feof(pfile))
{
c?=?fgetc(pfile);
if?(c?==?‘‘)
{
num[i]?=?‘\0‘; //添加字符串結(jié)束標(biāo)志
data[m][n].dis?=?atoi(num); //字符串轉(zhuǎn)換成整型
data[m][n].from?=?-1; //沒有中間節(jié)點
i?=?0; //準(zhǔn)備讀取下一個數(shù)
break;
}
else?if?((c?>=?‘0‘?&&?c?<=?‘9‘)?||?c?==?‘-‘)
{
num[i++]?=?c;
}?
}
}?
}
}
void?OutputRoutData() //打印路由表
{
int?i?j;
printf(“???“);
for?(i?=?0;?i? {
printf(“????%c???“?i?+?65);
}
printf(“\n“);
for?(i?=?0;?i? {
printf(“%c??“?i?+?65);
for?(j?=?0;?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)算法實現(xiàn)\
?????文件??????????40??2013-11-18?22:25??距離向量(DV)算法實現(xiàn)\1.txt
?????文件????????4343??2013-11-19?09:56??距離向量(DV)算法實現(xiàn)\luyou.cpp
?????文件????????3389??2013-11-18?21:09??距離向量(DV)算法實現(xiàn)\luyou.dsp
?????文件?????????518??2013-11-18?21:21??距離向量(DV)算法實現(xiàn)\luyou.dsw
?????文件???????41984??2013-11-19?09:57??距離向量(DV)算法實現(xiàn)\luyou.ncb
?????文件???????48640??2013-11-19?09:57??距離向量(DV)算法實現(xiàn)\luyou.opt
?????文件????????1137??2013-11-19?09:56??距離向量(DV)算法實現(xiàn)\luyou.plg
評論
共有 條評論