⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 routealgo.cc

📁 it is very important
💻 CC
字号:
// Generic helpers (all routing algorithms)// George F. Riley, Georgia Tech, Winter 2000#include <stdio.h>#include "rnode.h"// Forward declarationsstatic void PrintPred(nodeid_t, nodeid_t, RoutingVec_t&);static void NixPred(nodeid_t, nodeid_t, RoutingVec_t&, RNodeVec_t&, NixVec&);// Globally visible routinesvoid PrintRoute( nodeid_t s, nodeid_t d, RoutingVec_t& pred){ // Print the route, given source s, destination d and predecessor vector pred  printf("Route to node %ld is : ", d);  PrintPred(s, d, pred);  printf("\n");}// Create the NixVectorvoid NixRoute( nodeid_t s, nodeid_t d, RoutingVec_t& pred,               RNodeVec_t& nodes, NixVec& nv){  NixPred(s, d, pred, nodes, nv);}// Print the parent list (debug)void PrintParents(RoutingVec_t& pred){  printf("Parent vector is");  for (RoutingVec_it i = pred.begin(); i != pred.end(); i++)    {      printf(" %ld", *i);    }  printf("\n");}// Print the route from the nixvector (debug)void PrintNix(nodeid_t s, RNodeVec_t nodes, NixVec& nv){  printf("Printing Nv from %ld\n", s);  while(1)    {      printf("%ld\n", s);      fflush(stdout);      if (!nodes[s])        {          printf("PrintNix Error, no node for %ld\n", s);          break;        }      printf("Node %ld nixl %ld\n", s, nodes[s]->GetNixl());      Nix_t n = nv.Extract(nodes[s]->GetNixl());      if (n == NIX_NONE) break; // Done      nodeid_t s1 = nodes[s]->GetNeighbor(n);      if (s1 == NODE_NONE)        {          printf("Huh?  Node %ld can't get neighbor %ld\n", s, n);          break;        }      s = s1;    }  printf("\n");  nv.Reset();}// helpersstatic void PrintPred(nodeid_t s, nodeid_t p, RoutingVec_t& pred){  if (s == p)    {      printf(" %ld", s);    }  else    {      if (pred[p] == NODE_NONE)        {          printf(" No path..");        }      else        {          PrintPred(s, pred[p], pred);          printf(" %ld", p);        }    }}static void NixPred(nodeid_t s, nodeid_t p, RoutingVec_t& pred,                    RNodeVec_t& nodes, NixVec& nv){  if (s == p)    {      return; // Got there    }  else    {      if (pred[p] == NODE_NONE)        {          if(0)printf(" No path..");          return;        }      else        {          NixPred(s, pred[p], pred, nodes, nv);          NixPair_t n = nodes[pred[p]]->GetNix(p);          if (n.first == NIX_NONE)            { // ! Error.              printf("RouteAlgo::GetNix returned NIX_NONE!\n");              exit(1);            }          if(0)printf("NVAdding ind %ld lth %ld\n", n.first, n.second);          nv.Add(n);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -