路由模拟——路由算法1的实现(结点集合类)

原创 2004年05月07日 22:33:00

 

 

//文件nodeset.h

#pragma once<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

#include "resource.h"

using namespace GeneResource;

 

class NodeSet

{

public:

 

     NodeSet(void)

         : nodeNum(0)

         , nodeArray(NULL)

     {

     }

 

     NodeSet(int _nodeNum)

     {

          nodeNum = _nodeNum;

          nodeArray = new int[GENE_LENGTH];

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

              nodeArray[i]=-1;

     }

 

     NodeSet(NodeSet &_nodeSet)

     {

          nodeNum = _nodeSet.nodeNum;

          nodeArray = new int[GENE_LENGTH];

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

              nodeArray[i]=*(_nodeSet.nodeArray+i);

     }

 

     ~NodeSet(void)

     {

          Clear();

     }

public:

 

     void SetNodeNum(int _nodeNum)

     {

          Clear();

 

          nodeNum = _nodeNum;

          nodeArray = new int[GENE_LENGTH];

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

              nodeArray[i]=-1;//空集合

     }

 

     void Clear(void)

     {

          if(nodeArray!=NULL)

              delete []nodeArray;

     }

 

     int *& GetpNodeSet()

     {

         return nodeArray;

     }

 

     int GetNodeNum()

     {

         return nodeNum;

     }

 

     friend int RANDOM(NodeSet &_nodeSet)

     {

         int n=0,MAX=0;

         double p = 0.0;

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

              if( *(_nodeSet.nodeArray+i) != -1)

                   MAX ++;

         //0.1的概率选择失败

         p = RandInteger(1000);

          if( p/1000 > 0.9 )

              return -1;

         //随即选择结点

         n = RandInteger(MAX);

          if(_nodeSet.nodeArray!=NULL)

              return *(_nodeSet.nodeArray+n);

         else

              return -1;

     }

 

     //获得最后一个结点的标号;返回-1为空

     int GetLastIndex()

     {

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

              if(*(nodeArray+i) == -1)

                   return i-1;

          return -1;

     }

 

     //从_nodeSet1中减去也在_nodeSet2出现的结点

     friend NodeSet & operator -(NodeSet &_nodeSet1,NodeSet &_nodeSet2)

     {

         //TODO: return statement

         int n=_nodeSet1.nodeNum;

         int k=0;

         bool bVal=true;

          NodeSet *nodeSet=new NodeSet(n);

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

         {

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

                   if( *(_nodeSet1.nodeArray+i)

                       == *(_nodeSet2.nodeArray+j) )

                   {

                        bVal=false;

                       break;

                   }

 

              if(bVal)

              {

                   *(nodeSet->nodeArray+k)=*(_nodeSet1.nodeArray+i);

                   k++;

              }else

                   bVal=true;

         }

         return *nodeSet;

     }

 

     void operator =(NodeSet &_nodeSet)

     {

          if(nodeNum!=_nodeSet.nodeNum)

              SetNodeNum(_nodeSet.nodeNum);

        

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

              *(nodeArray+i)=*(_nodeSet.nodeArray+i);

     }

private:

     int nodeNum;

     int *nodeArray;

};

 

路由模拟——路由算法1的实现(基因集合类)

  //文件geneset.h#pragma once#include "routgene.h" class GeneSet{public:     GeneSet(int _nodeNum,int ...
  • PercyLee
  • PercyLee
  • 2004年05月07日 15:58
  • 1313

计算机网络1-距离矢量路由算法模拟

距离矢量路由算法实验 一、实验要求   网络拓扑图   实验过程描述 1、将上面的网络拓扑图保存待用 例如,可用二维数组保存,数组下标或索引可隐含表示网络节点。数组元素保存网络拓扑图边上的权值 2、...
  • bobo1356
  • bobo1356
  • 2016年06月16日 23:42
  • 1793

距离矢量路由算法实验

计算机网络实验:///Distance Vector routing #include #include #include #include #include #include #include #i...
  • algzjh
  • algzjh
  • 2017年06月01日 08:51
  • 564

路由模拟——路由算法1的实现(路由基因类)

 //文件routgene.h#pragma once#include "nodeset.h" class RoutGene{public:     RoutGene(int _nodeNum=0);...
  • PercyLee
  • PercyLee
  • 2004年05月07日 13:22
  • 1355

路由选择算法----JAVA版

import java.io.*; import java.util.*; public class RouteDesign { final static int maxnum = 100; ...
  • down_load_111
  • down_load_111
  • 2016年11月09日 23:44
  • 1640

一个用Dijkstra算法实现的路由算法的java程序——4 MapCanvas类

import java.awt.*;/** * 一块实现地图绘制的画布。此画布添加到地图显示窗口中。 * @author Fe */public class MapCanvas extends Can...
  • ffee
  • ffee
  • 2005年11月11日 19:19
  • 1481

路由模拟——路由算法1的构想

                                                                  路由算法的构想2004-4-9 一,对于这个网络,有如下定义:1, ...
  • PercyLee
  • PercyLee
  • 2004年04月19日 19:10
  • 1076

编程实现路由算法——迪杰斯特拉算法

路由算法有很多,本篇采用迪杰斯特拉最短路径法实现简单的路由算法。可能很多人一看到这个就会想到数据结构了,想到数据结构中必须要建立图的结构就很头疼,今天这种写法可以先不采用数据结构书上的写法,也可以实现...
  • icodeyou
  • icodeyou
  • 2014年11月27日 16:15
  • 2741

路由模拟——路由算法2的实现

 /* 算法说明:本实现的算法为Floyed算法,矩阵matrix(局部变量)存储源结点到其它结点的          最短路径,而result则存储返回结果——路由表。 参数说明:         ...
  • PercyLee
  • PercyLee
  • 2004年05月07日 15:53
  • 1664

一个用Dijkstra算法实现的路由算法的java程序——8 GraphMain类

import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.Vector;/** * 程序入口所在类...
  • ffee
  • ffee
  • 2005年11月11日 19:33
  • 3834
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:路由模拟——路由算法1的实现(结点集合类)
举报原因:
原因补充:

(最多只允许输入30个字)