C语言模拟距离向量法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

void main()

{

struct luyoubiao{

char mudi[10];

int juli;

char xiayitiao[3];

};

struct luyoubiao a[50];

struct luyoubiao b[50];

int i,j,k,x,y;

int p,n;

char m[3];

char str[50]="目的网络距离下一跳路由器";

printf("请输入路由器R1的路由表:\n");

for(i=0;i<=49;i++)

{

printf("目的网络:");

scanf("%s",&a[i].mudi);

printf("距离:");

scanf("%d",&a[i].juli);

printf("下一跳:");

scanf("%s",&a[i].xiayitiao);

printf("是否继续输入(1==y 2==n)\n");

scanf("%d",&p);

if(p==2)

break;

}

printf("请输入相邻路由器:");

scanf("%s",m);

printf("请输入相邻路由器%s发来的更新信息:\n",m);

for(j=0;j<=49;j++)

{

printf("目的网络:");

scanf("%s",&b[j].mudi);

printf("距离:");

scanf("%d",&b[j].juli);

printf("下一跳:");

scanf("%s",&b[j].xiayitiao);

printf("是否继续输入(1==y 2==n)\n");

scanf("%d",&p);

if(p==2)

break;

}

printf("路由器R1的路由表:\n");

printf("----------------------------\n");

puts(str);

for(x=0;x<=i;x++)

printf(" %s %d %s\n",a[x].mudi,a[x].juli,a[x].xiayitiao); printf("----------------------------\n");

printf("\n");

printf("路由器%s的路由表:\n",m);

printf("----------------------------\n");

puts(str);

for(x=0;x<=j;x++)

printf(" %s %d %s\n",b[x].mudi,b[x].juli,b[x].xiayitiao); printf("----------------------------\n");

printf("\n");

for(x=0;x<=j;x++)

{

b[x].juli++;

strcpy(b[x].xiayitiao,m);

}

printf("相邻路由器%s修改后信息:\n",m);

printf("----------------------------\n");

puts(str);

for(x=0;x<=j;x++)

printf(" %s %d %s\n",b[x].mudi,b[x].juli,b[x].xiayitiao); printf("----------------------------\n");

printf("\n");

k=i+1;

for(x=0;x<=j;x++)

{

n=0;

for(y=0;y<=i;y++)

{

if(strcmp(b[x].mudi,a[y].mudi)==0)

{

if (strcmp(b[x].xiayitiao,a[y].xiayitiao)==0)

a[y].juli=b[x].juli;

else if(a[y].juli>b[x].juli)

{

a[y].juli=b[x].juli;

strcpy(a[y].xiayitiao,b[x].xiayitiao);

}

}

else

{

n++;

}

}

if(n==i+1)

{

strcpy(a[k].mudi,b[x].mudi);

a[k].juli=b[x].juli;

strcpy(a[k].xiayitiao,b[x].xiayitiao);

k++;

}

}

printf("路由器R1更新后的路由表:\n");

printf("----------------------------\n");

puts(str);

if(k==i+1)

{

for(x=0;x<=i;x++)

printf(" %s %d %s\n",a[x].mudi,a[x].juli,a[x].xiayitiao);

printf("----------------------------\n");

printf("\n");

}

else

{

for(x=0;x<=k-1;x++)

printf(" %s %d %s\n",a[x].mudi,a[x].juli,a[x].xiayitiao);

printf("----------------------------\n");

printf("\n");

}

}

相关文档
最新文档