资源简介
采用Dijkstra算法,实现校园最短路径,资源包内包含源代码和文档说明~
功能:
(1) 输出顶点信息:将校园内各位置输出。
(2)输出边的信息:将校园内每两个位置(若两个位置之间有边)的距离输出。
(3) 修改:修改两个位置(若两个位置之间有边)的距离,并重新输出每两个位置(若两个位置之间有边)的距离;
(4) 求最短路径:输出给定两点之间的最短路径的长度及途经的地点或输出任意一点与其他各点的最短路径。
(5)删除:删除一条有效边。
(6)插入:插入一条有效边。
代码片段和文件信息
#include
#include //引入标准库中的头文件
#include “graph.h“ //引入头文件
using namespace std;
/* 前置条件:图不存在
输入:无
功能:图的初始化
输出:无
后置条件:构造一个有值的图
*/
Graph::Graph(int* astring* v int n ) //构造图
{
int ij;
vertexNum=n; //顶点数
for (i=0; i for (j=0; j arc[i][j] = 10000;//无效边值为10000
for ( i=0; i vertex[i]=v[i]; //存储顶点信息
for (i=0; i for (j=0; j arc[i][j]=*(a+i*n+j);
}
/* 前置条件:图已存在
输入:无
功能:输出图中所有顶点的数据信息
输出:图中所有顶点的数据信息
后置条件:图保持不变
*/
void Graph::PutOutVexInfo() //取顶点
{
int i=0; //假设源点是第0个顶点,即顶点序号是0
if (i>=vertexNum) throw “位置“; //错误抛出异常
else
{
for(i=0;i cout< }
}
/* 前置条件:图已存在
输入:无
功能:输出图中所有的边
输出:图中所有顶点的数据信息
后置条件:图保持不变
*/
void Graph::PutOutArcInfo() //输出图中所有的边
{
int i=0; //假设源点是第0个顶点,即顶点序号是0
int j=0;
if ( i>=vertexNum|| j>=vertexNum) throw “位置“; //错误抛出异常
else
{ for(i=0;i for(j=0;j if(arc[i][j]<10000) //两点之间存在路径
cout<<“从 “< }
}
}
}
/* 前置条件:图已存在
输入:顶点v1v2
功能:修改顶点v1、v2的距离
输出:修改后图中所有的距离
后置条件:图保持不变
*/
void Graph::SetArc(int v1int v2int arclength) //修改距离
{ //假设源点是第0个顶点,即顶点序号是0
if ( v1==v2 || v1>=vertexNum || v2>=vertexNum) throw “位置“; //错误抛出异常
else
{ arc[v1][v2]=arclength; //修改v1顶点到v2顶点的距离
arc[v2][v1]=arclength;
}
}
/* 前置条件:图已存在
输入:顶点v ,endv
功能:假如endv存在,求v到endv的最短路径;假如不输入endv,则求v到任意顶点的最短路径
输出:所求得的最短路径及所经历的位置
后置条件:图保持不变
*/
void Graph::Dijkstra(int vint endv) //求最短路径,从v顶点到endv点的最短路径
{
if (v>=vertexNum) throw “位置“; //v顶点或endv顶点输出不正确则抛出异常
int numv=vertexNum; //顶点数
int dist[MaxSize]; //最短长度
int path[MaxSize]; //当前找到的最短路径
int s[MaxSize]; //存放源点和已生成的终点的集合
int max= 10000; //代表无穷大
int ijkwm;
f
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 557145 2015-03-13 20:13 图—校园最短路径问题\代码\Debug\graph.exe
文件 797044 2015-03-13 20:13 图—校园最短路径问题\代码\Debug\graph.ilk
文件 10823 2015-03-12 23:01 图—校园最短路径问题\代码\Debug\graph.obj
文件 2194056 2015-03-13 20:13 图—校园最短路径问题\代码\Debug\graph.pch
文件 1115136 2015-03-13 20:13 图—校园最短路径问题\代码\Debug\graph.pdb
文件 280130 2015-03-13 20:13 图—校园最短路径问题\代码\Debug\graphmain.obj
文件 82944 2015-03-13 20:16 图—校园最短路径问题\代码\Debug\vc60.idb
文件 110592 2015-03-13 20:13 图—校园最短路径问题\代码\Debug\vc60.pdb
文件 6939 2015-03-13 20:52 图—校园最短路径问题\代码\graph.cpp
文件 4526 2005-03-27 10:25 图—校园最短路径问题\代码\graph.dsp
文件 533 2005-03-27 09:30 图—校园最短路径问题\代码\graph.dsw
文件 1175 2015-03-13 20:13 图—校园最短路径问题\代码\graph.h
文件 50176 2015-03-13 20:58 图—校园最短路径问题\代码\graph.ncb
文件 48640 2015-03-13 20:58 图—校园最短路径问题\代码\graph.opt
文件 894 2015-03-13 20:13 图—校园最短路径问题\代码\graph.plg
文件 5189 2015-03-13 20:12 图—校园最短路径问题\代码\graphmain.cpp
文件 751104 2015-03-13 20:58 图—校园最短路径问题\校园最短路径的设计文档.doc
目录 0 2015-04-10 22:54 图—校园最短路径问题\代码\Debug
目录 0 2015-04-10 22:54 图—校园最短路径问题\代码
目录 0 2015-04-10 22:54 图—校园最短路径问题
----------- --------- ---------- ----- ----
6017046 20
相关资源
- c c++嵌入式系统编程 pdf 中文版+英文版
- AES算法加密解密C++源码及程序完整的
- C++语言学习教程
- C++MFC实现的绘制正方体的三视图
- C++11教程参考书
- The C++ Programming Language习题答案清晰版
- 最短寻道时间优先和扫描算法C++实现
- LL(1)语法分析器C++版
- vc++使用libcurl文件,支持断点续传,支
- 自绘按钮的实现,对VC++6.0控件派生学
- OpenCV漫水填充程序 by浅墨
- OpenCV图像的膨胀与腐蚀程序 by浅墨
- 我用VS2010 C++和windows API制作的坦克大
- 算术编码C++ 源代码
- C++开发漂亮的软件界面
- vc++收发电子邮件系统
- C++ CAsyncSocket类聊天室程序
- C++课程设计 学籍管理系统82049
- mfc酒店管理系统C++编写,程序简单,
- C++编写Genesis200自动化
- C++实现线程池源文件
-
最简单的c++ xm
l类,跨平台使用 - c++ 、MFC 实现中点画圆算法及工程代码
- 用C++语言编写一个班级信息管理系统
- VC++ 球体 Phong光照模型
- VC6.0--计算器
- C、C++、C# 函数手册合集chm
- 用c++写的曲线拟合程序
- C+++视频监控系统.zip
- CACertification Authoritcationc++源代码
评论
共有 条评论