• 大小: 99KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签:

资源简介

链路状态路由算法,求最大路径,可以增删路由。含报告。。。

资源截图

代码片段和文件信息

#include 
#include 
#define  routeTable “routeTable.txt“

using namespace std;
const int AGE = 10;   //节点生存跳数 
const int MAX_NODES = 1024;  
const int INFINITY = 100000;


int dist[MAX_NODES][MAX_NODES];   //用于存放网络拓扑结构连接矩阵 
int static Vnums;  //总的节点数 

void initDist(){    //初始化邻接矩阵 
 for(int i = 0; i < MAX_NODES; i ++)
     for(int j = 0; j < MAX_NODES; j ++)
        dist[i][j] = 0;
 } 

void creatRouteMap(int Vnums){    //创建网络拓扑结构的邻接矩阵 
 for(int i = 0; i < Vnums; i ++)
   { 
            cout << “输入第“ << i << “个节点与第“ ; 
   for(int j = 0; j < Vnums; j ++)
      {
       cout << j << “个节点的权值:“ << endl;
       cin >> dist[i][j];
           }
      }
 } 

void saveRoute(ofstream& routeTables){  //保存路由信息 
     routeTables << “路由邻接矩阵为:“;
     routeTables << “\n“;
     routeTables << “**********************************“; 
     routeTables << “\n“;
 for(int i = 0; i < Vnums; i ++)
   { 
    for(int j = 0; j < Vnums; j ++)
      {
       
       routeTables<            }
        routeTables << “\n“;
       }
     
     }
     
void dijkstra(int s int t int path[]){
 struct state{         //存放节点数据 
   int predecessor;   //父节点 
   int length;        //权值 
   bool  lable;  //访问状态 
   }state[MAX_NODES];
     
     int ijkmin; 
 struct state *p;
 for(p = &state[0]; p < &state[Vnums]; p ++)  //初始化节点数据 
    {
     p->predecessor = -1;
     p->length = INFINITY;
     p->lable = false;
}
state[t].length = 0;
state[t].lable = true;
k = t;

do{
    for(int i = 0; i < Vnums; i ++)
           if( (dist[k][i] != 0) && (state[i].lable == false))
              if(state[k].length + dist[k][i] < state[i].length)  
                 {
     state[i].predecessor = k;  //记录节点 
     cout << k << “->“; 
              state[i].length = state[k].length + dist[k][i];  //路径长度总和
         }
k = 0;
    min = INFINITY;
    for(int i = 0; i < Vnums; i ++)
    if((state[i].lable == false) && (state[i].length < min))
   {
       min = state[i].length;   
                   k = i;  
                }   
state[k].lable = true; 
   }while(k!=s);
      cout << s;
 }

void addRoute(){  //添加一个路由及结点信息 
     char ch;
     do{
     cout << “添加一个路由:“ << endl;
     Vnums = Vnums + 1;
     cout << “输入第“ << Vnums - 1 << “个节点与第“ ; 
   for(int j = 0; j < Vnums; j ++)
      {
       cout << j << “个节点的权值:“ << endl;
       cin >> dist[Vnums - 1][j];   //对应行的信息 
       dist[j][Vnums - 1] = dist[Vnums - 1][j]; //对应列的信息 
           }
     cout << “继续添加(y 或者 n):“ << endl;
     cin >> ch;
     if(ch == ‘n‘) break;
       }while(ch == ‘y‘);
     }

void deleteRoute(){
 char ch;
 int delNum; 
     do{
     cout << “输入删除路由结点号:“ << endl;
     cin >> delNum; 
     for(int j = 0; j < Vnums; j ++)
      {
       dist[delNum - 1][j] = 0;   //对应行的信息 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     207360  2010-12-23 21:42  链路状态路由算法实验.doc

     文件       6122  2010-12-18 20:11  链路状态路由算法.cpp

----------- ---------  ---------- -----  ----

               213482                    2


评论

共有 条评论