C语言模拟距离向量法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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");
}
}