路由算法(C语言最终简化版) 2011年05月09日 星期一 10:17 A.M. 题目要求:http://hi.baidu.com/snzigod/blog/item/b3c67acb491ea450f31fe747.html 代码: //函数调用的方法 #include using namespace std; void inital();//初始化 void make();//整理 void show();//显示 int r[16][2] = { {16, 0 }, {16, 0 }, {16, 0 }, {16, 0 } ,//路由1 {16, 0 }, {16, 0 }, {16, 0 }, {16, 0 } ,//路由2 {16, 0 }, {16, 0 }, {16, 0 }, {16, 0 } ,//路由3 {16, 0 }, {16, 0 }, {16, 0 }, {16, 0 } //路由4 }; void main() { inital();//初始化路由表 printf("\t\t初始化的路由表\n"); show();//显示初始化路由表 make();//整理信息 printf("\n\t\t更新的路由表\n"); show();//显示结果 } void inital()//初始化 { printf("四个网络: net1, net2, net3, net4.\n\n四个路由: router1, router2,router3,router4.\n\n输入 1代表net1, \n\t2代表net2, \n\t3代表net3, \n\t4代表net4.\n\n"); for (int i = 0; i < 4; i++) { printf("输入router%d端口数: ", i + 1); int j ; scanf("%d",&j); for (; j > 0; j--) { printf("输入连接到router%d的网络: ", i + 1); int n ; scanf("%d",&n); int kk = i * 4 + n - 1; r[kk][0] = 1; r[kk][1] = 0; } printf("\n"); } } void show()//显示 { for (int ii = 0; ii< 4; ii++) { printf("router%d的路由表: \n", ii + 1); printf(" 网络\t距离\t\t下一跳路由\n"); for (int k = 0; k < 4; k++) { int kk = ii * 4 + k; if(r[kk][0]==16)printf("net%d\t不可达\t\t没有下一跳\n",k + 1); else if(r[kk][1]==0)printf("net%d\t直接交付\t没有下一跳\n", k + 1); else printf("net%d\t%d\t\trouter%d\n", k + 1, r[kk][0], r[kk][1]); } printf("\n"); } } void make()//整理信息 { for(int t=1;t<4;t++) { for (int iii = 0; iii < 12; iii++) { for (int j = ((iii / 4) + 1) * 4; j < 16; j++) { if ((r[iii][0] == 1) && (r[j][0] == 1) && (iii % 4 == j % 4)) { for (int m = (iii/ 4) * 4; m < (iii / 4 + 1) * 4; m++) { if (m != iii && r[m][0] == t && r[(j / 4) * 4 + m % 4][0] == 16) { r[(j / 4) * 4 + m % 4][0] = t+1; r[(j / 4) * 4 + m % 4][1] = iii / 4 + 1; } } for (int mm = (j / 4) * 4; mm < (j / 4 + 1) * 4; mm++) { if (mm != j && r[mm][0] == t && r[(iii / 4) * 4 + mm % 4][0] == 16) { r[(iii / 4) * 4 + mm % 4][0] = t+1; r[(iii / 4) * 4 + mm % 4][1] = j / 4 + 1; } } } } } } } 运行效果:
本文档为【路由算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。