VC语言

本类阅读TOP10

·VC++下使用ADO编写数据库程序
·VC++ 学习笔记(二)
·Windows消息大全
·每个开发人员现在应该下载的十种必备工具
·在2000和xp下,隐藏进程,VC6.0测试通过!!!
·用Visual C++打造IE浏览器(1)
·Netmsg 局域网聊天程序
·教你用VC6做QQ对对碰外挂程序
·VC++学习笔记(四)
·VC++中经常使用的函数!~~

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
路由模拟——路由算法2的实现

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

/*

算法说明:本实现的算法为Floyed算法,矩阵matrix(局部变量)存储源结点到其它结点的

          最短路径,而result则存储返回结果——路由表。

 

参数说明:

         _netArray: routNum * routNum的矩阵,网络的拓扑信息

          _valArray: routNum * routNum的矩阵,网络的耗散信息

          result   : routNum * 2的矩阵,路由表-返回

          routNum  : 路由器数量

          index    : 源路由器号

*/

void __declspec(dllexport) ComputeMethods(int **_netArray,int **_valArray

                                                 ,int **&result,int routNum,int index)

{

     //

         int **matrix =0;

         bool bVal = true;

 

         matrix = new int*[routNum];

          for(int i=0;i<routNum;i++)

              matrix[i] = new int[routNum];

 

          for(int i=0;i<routNum;i++)

              for(int j=0;j<routNum;j++)

                  matrix[i][j] = _valArray[i][j];

        

          for(int i=0;i<routNum;i++){

              result[i][0]=-1;

              result[i][1]=-1;

         }

 

          while(true)

         {

              for(int k=0;k<routNum;k++)

                   for(int i=0;i<routNum;i++)

                        for(int j=0;j<routNum;j++)

                       {

                                 if(    matrix[i][j] >=(matrix[i][k] + matrix[k][j]))

                                 {

                                     matrix[i][j] = matrix[i][k] + matrix[k][j];

                                      if(i==index && _netArray[i][k]==1)

                                     {

                                          if(i!=k || k==j){

                                              result[j][0] = j;

                                              result[j][1] = k;

                                          }

                                     }

                                 }//end of if

                       }//end of for

              for(int i=0;i<routNum;i++)

                   bVal = bVal &&(result[i][0]!=-1) && (result[i][1]!=-1);

 

              if(bVal)

                   break;

              else

                   bVal =true;

         }//end of while

 

         delete []matrix;

}

 




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有