资源简介
武汉理工大学数据结构与算法实验,景区管理导航系统,代码运行良好
代码片段和文件信息
#include
#include“Graph.h“
#include“global.h“
using namespace std;
void CGraph::Init(){
for(int i=0;i<20;i++)
for(int j=0;j<20;j++)
m_aAdjmatrix[i][j]=0;//初始化图
m_nVexNum=0;
}
int CGraph::InsertVex(Vex sVex){
if(m_nVexNum==MAX_VERTEX_NUM){
return ERROR;
}
m_aVexs[m_nVexNum++]=sVex;
return OK;
}
int CGraph::InsertEdge(Edge sEdge){
if(sEdge.vex1<0||sEdge.vex1>m_nVexNum||sEdge.vex2<0||sEdge.vex2>m_nVexNum)
return ERROR;
m_aAdjmatrix[sEdge.vex1][sEdge.vex2]=sEdge.weight;
m_aAdjmatrix[sEdge.vex2][sEdge.vex1]=sEdge.weight;
return OK;
}
//获得顶点
Vex CGraph::GexVex(int v){
return m_aVexs[v];
}
//获得邻近顶点个数与边
int CGraph::FindEdge(int vEdge aEdge[])
{
int k = 0;
for (int i = 0; i < m_nVexNum; i++)
{
if (m_aAdjmatrix[v][i]!=0)
{
aEdge[k].vex1 = v;
aEdge[k].vex2 = i;
aEdge[k].weight = m_aAdjmatrix[v][i];
k++;
}
}
return k;
}
int CGraph::GetVexNum() {
return m_nVexNum;
}
//深度优先搜索遍历
void CGraph::DFS(int nVex bool bVisited[] int &nIndex PathList &pList) {
bVisited[nVex] = true;
pList->vexs[nIndex++] = nVex;
int vexNum = 0;//判断是否所有结点是否全都被访问过
for (int i = 0; i < m_nVexNum; i++)
{
if (bVisited[i])
{
vexNum++;
}
}
//如果所有结点都被访问过
if (vexNum==m_nVexNum)
{
pList->next = (PathList)malloc(sizeof(Path));
for (int i = 0; i < m_nVexNum; i++)
{
pList->next->vexs[i] = pList->vexs[i];
}
pList = pList->next;
pList->next = NULL;
}
else
{
for (int i = 0; i < m_nVexNum; i++)
{
if (m_aAdjmatrix[nVex][i] != 0 && !bVisited[i])
{
DFS(i bVisited nIndex pList);
bVisited[i] = false;
nIndex--;
}
}
}
}
//遍历调用函数
void CGraph::DFSTraverse(int nVex PathList & pList) {
int nIndex = 0;
bool bVisited[MAX_VERTEX_NUM] = { false };
DFS(nVex bVisited nIndexpList);
}
//求最短路径长度
int CGraph::FindShortPath(int nVexStart int nVexEnd Edge aPath[])
{
int nShortPath[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//保存最短路径
int nShortDistance[MAX_VERTEX_NUM];//保存最短距离
bool aVisited[MAX_VERTEX_NUM];//判断某顶点是否已经加入到最短路径
//初始化
int v;
for (v = 0; v {
aVisited[v] = false;
if (m_aAdjmatrix[nVexStart][v] != 0)
//初始化该顶点到其他顶点的最短距离,默认为两点间的距离
nShortDistance[v] = m_aAdjmatrix[nVexStart][v];
else
//如果顶点i和nVexStart不相连,则最短距离设为最大值
nShortDistance[v] = 0x7FFFFFFF;
nShortPath[v][0] = nVexStart;//起始点为nVexStart
for (int j = 1; j {
nShortPath[v][j] = -1;//初始化最短路径
}
}
//初始化,nVexStart顶点加入到集合中
aVisited[nVexStart] = true;
int min;
for (int i = 1; i {
min = 0x7FFFFFFF;
bool bAdd = false;//判断是否还有顶点可以加入到集合中
for (int j = 0; j {
if (aVisited[j] == false)
{
if (nShortDistance[j] {
v = j;//j顶点离nVexStart顶点最近
min = nShortDistance[j];//j到nVexStart的最短距离为min
bAdd = true;
}
}
}//如果没有顶点可以加入到集合,则跳出循环
if (
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 46080 2018-05-30 17:27 GraphCPro\.vs\GraphCPro\v14\.suo
文件 55808 2018-05-30 17:26 GraphCPro\Debug\GraphCPro.exe
文件 424328 2018-05-30 17:26 GraphCPro\Debug\GraphCPro.ilk
文件 946176 2018-05-30 17:26 GraphCPro\Debug\GraphCPro.pdb
文件 93 2018-05-12 20:52 GraphCPro\GraphCPro\data\Edge.txt
文件 197 2018-05-12 21:16 GraphCPro\GraphCPro\data\Vex.txt
文件 1692 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\cl.command.1.tlog
文件 14646 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\CL.read.1.tlog
文件 1446 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\CL.write.1.tlog
文件 30570 2018-05-30 17:20 GraphCPro\GraphCPro\Debug\Graph.obj
文件 381 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\GraphCPro.exe.intermediate.manifest
文件 90 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\GraphCPro.lastbuildstate
文件 1653 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.log
文件 1800 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\CL.command.1.tlog
文件 30220 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\CL.read.1.tlog
文件 3502 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\CL.write.1.tlog
文件 196 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\GraphCPro.lastbuildstate
文件 1418 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\li
文件 2986 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\li
文件 662 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\GraphCPro.tlog\li
文件 713 2018-05-11 16:01 GraphCPro\GraphCPro\Debug\GraphCPro.vcxprojResolveAssemblyReference.cache
文件 0 2018-05-11 16:01 GraphCPro\GraphCPro\Debug\GraphCPro.write.1.tlog
文件 1524 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\li
文件 3012 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\li
文件 830 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\li
文件 41231 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\Main.obj
文件 456 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\mt.command.1.tlog
文件 734 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\mt.read.1.tlog
文件 276 2018-05-11 16:03 GraphCPro\GraphCPro\Debug\mt.write.1.tlog
文件 64063 2018-05-30 17:26 GraphCPro\GraphCPro\Debug\Tourism.obj
............此处省略30个文件信息
- 上一篇:ssh校园二手物品交易网
- 下一篇:统一用户以及权限管理系统需求分析报告
相关资源
- 2018西南交通大学数据结构与程序设计
- 数据结构课程设计内部排序算法比较
- 算法与数据结构 张乃孝版 答案
- 《数据结构_课程设计》表达式求值
- 员工管理系统数据结构
- 数据结构算法设计题库及答案
- 2016年考研核心考点——数据结构
- 数据结构题集+答案 完全版 严蔚敏p
- 南邮数据结构考研初试真题1999年~20
- 数据结构课程设计-在线交易系统
- 霍夫曼树数据结构课程设计
- 清华大学-数据结构(课件+习题+课后
- 厦大近年本科数据结构试卷包含部分
- 2018年北京交通大学10101数据结构复试
- 数据结构之图书管理系统
- Fundamentals of Data Structures
- 武汉理工大学数据结构考研资料
- 数据结构习题集——目前最完整的数
- 数据结构试题库集及答案
- 数据结构课程设计_简单的文本编辑器
- 计算机专业考研数据结构1600题
- 武汉理工大学计算机马区综合实验3数
- 数据结构图形化演示,里面有动态查
- 数据结构课件pdf
- 计算机考研数据结构李春葆
- 数据结构课程设计之运动会分数统计
- [MIT公开课]MITOpenCourseWare: Advanced Data
- 数据结构(第二版)Pascal语言版
- 数据结构及应用算法教程
- 数据结构实验报告 交通咨询系统设计
评论
共有 条评论