资源简介
链路状态路由算法,求最大路径,可以增删路由。含报告。。。
代码片段和文件信息
#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
- 上一篇:冰河木马V8.4--[安全软件]
- 下一篇:我的二元二次函数图像绘制程序原理极其吐血
相关资源
- 普通dijkstra代码加改进后的dijkstra代码
- 中兴捧月算法大赛Dijkstra派解决方案
- Dijkstra算法源代码
- 北京地铁换乘--数据结构课程设计
- 最短路径算法Dijkstra源代码
- 几种堆(BinFibPair)在Dijkstra算法上的
- 最短路径Dijkstra
- dijkstra算法—求解最短路问题
- dijkstra算法在AGV调度系统的应用
- OPNET路由DIjkstra实现跳数与队列延时代
- Dijkstra算法详细讲解.ppt
- Dijkstra算法求任意两个城市之间最短路
- 求最短路径Dijkstra算法
- Dijkstra算法实现天津地铁最短路径查找
- Dijkstra算法可视化js实现
- 并行Dijkstra最短路径算法
- dijkstra算法R语言
- 基于Dijkstra算法的路径规划算法
- 几种堆(BinaryHeap FibHeap PairHeap)在D
- Dijkstra算法的流程图
- 链路状态路由算法
评论
共有 条评论