rip的C语言实现
rip的C语言实现
//运转环境visual studio 2005 C++代
#include "stdafx.h" //手动添加头文件C:\Program Files\Microsoft Visual Studio\VC98\ATL\SRC
#include
#include
#include
#include
#include
using namespace std;
const int MAX=15;
typedef struct ArcCell//弧结点
{
int adj;
}ArcCell,Am[MAX][MAX];
struct TNode//路由表
{
string destination;
int distance;
string nextjump;
};
struct VNode//路由结点
{
string r;//极点名
vector t;
};
struct Graph{//图
VNode vex[MAX];
Am arcs;
int vexnum,arcnum;
};
//确定s正在图中的地位
int LocateVex(Graph G,string s)
{
int i;
for(i=0;i
if(s==G.vex[i].r)
break;
return i;
}
//建立图
bool Create(Graph &G)
{
int i,j,k;
TNode temp;
string v1,v2;
cout<
cin>>G.vexnum>>G.arcnum;
cout<
for(i=0;i
{
cout<
cin>>G.vex[i].r;
cout<
cin>>temp.destination>>temp.distance>>temp.nextjump;
while(1)
{
if(temp.distance>16)temp.distance=16;
G.vex[i].t.push_back(temp);//结构路由表
cin>>temp.destination>>temp.distance>>temp.nextjump;
if(temp.destination=="0"&&temp.distance==0&&temp.nextjump=="0")
break;
}
}
for(i=0;i
for(j=0;j
G.arcs[i][j].adj=10000;
for(k=0;k
{
cout<
cin>>v1>>v2;
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G.arcs[i][j].adj=1;
G.arcs[j][i].adj=1;
}
return true;
}
void print(Graph G)
{
int i,j;
for(i=0;i
{
cout<
cout<
for(j=0;j
cout<
cout<
}
}
bool Exchange(Graph &G)
{
int i,j,k,t,count;
TNode temp;
for(i=0;i
for(j=0;j
{
if(G.arcs[i][j].adj==1)
{
for(k=0;k
{
temp.destination=G.vex[i].t[k].destination;
temp.distance=G.vex[i].t[k].distance+1;
if(temp.distance>16)temp.d