资源简介
开发景区管理系统,对景区进行管理。使用图的数据结构来保存景区景点信息,为用户提供
创建图、查询景点信息、景点导航、搜索最短路径、铺设电路规划等功能(共三次实验)。
景点数据:景点信息(附件中的Vex.txt)、道路信息(附件中的Edge.txt)

代码片段和文件信息
#include
#include
#include
#include “Stack.h“
#include “Graph.h“
//using namespace std;
void cleanStr(char string[]);
Graph::Graph() {
int i j;
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
m_aAdjMatrix[i][j] = -1;
}
}
m_nVexNum = 0;
}
//初始化图
bool Graph::InitGraph(char VexFileName[] char EdgeFileName[]) {
ifstream vexFile(VexFileName);
ifstream edgeFile(EdgeFileName);
char string[256] = { 0 };
Vex tempVex;
Edge tempEdge;
int vexNum = 0;
if (!vexFile.is_open() || !edgeFile.is_open()) {
return false; //文件打开失败
}
cleanGraph(); //建图前清零,以免重复创建时出错
vexFile.getline(string 256);
vexNum = str2int(string);
for (int i = 0; i < vexNum; i++) {
cleanStr(string);
vexFile.getline(string 256);
tempVex.num = str2int(string);
vexFile.getline(tempVex.name 20);
vexFile.getline(tempVex.desc 1024);
if (!InsertVex(tempVex)) return false; //顶点插入失败
}
cleanStr(string);
while (!edgeFile.eof()) {
edgeFile >> tempEdge.vex1 >> tempEdge.vex2 >> tempEdge.weight;
if(!InsertEdge(tempEdge)) return false; //插入边失败
}
vexFile.close();
edgeFile.close();
return true;
}
//插入顶点
bool Graph::InsertVex(Vex sVex) {
if (m_nVexNum < 20) {
m_aVexs[m_nVexNum++] = sVex; //插入顶点到数组中
return true;
}
else {
return false; //顶点已满
}
}
//插入边
bool Graph::InsertEdge(Edge sedge) {
if (sedge.vex1 < 0 || sedge.vex1 >= 20 || sedge.vex2 < 0 || sedge.vex2 >= 20) {
return false; //顶点的编号越界了
}
else {
m_aAdjMatrix[sedge.vex1][sedge.vex2] = sedge.weight;
m_aAdjMatrix[sedge.vex2][sedge.vex1] = sedge.weight;
return true;
}
}
//获取顶点
Vex Graph::GetVex(int nVex) {
return m_aVexs[nVex];
}
//找与指定顶点相连的边
bool Graph::FindEdge(int nVex int aEdge[]) {
int i;
if (nVex > -1 && nVex < 20) {
for (i = 0; i < m_nVexNum; i++) {
aEdge[i] = m_aAdjMatrix[nVex][i];
}
return true;
}
else {
return false; //顶点编号不对
}
}
//获取顶点数
int Graph::GetVexNum(void) {
return m_nVexNum;
}
//将图清零
void Graph::cleanGraph(void) {
int i j;
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
m_aAdjMatrix[i][j] = -1;
}
}
m_nVexNum = 0;
}
struct De {
int vex;
int i;
De() { vex = -1; i = 0; }
};
//获取所有路径,用链表返回
Path *Graph::DFSAll(int v) {
bool isVisited[20] = { false }flag=true;
Path *pathList=new Path;
Path *tempPath = NULL*pTail=pathList;
int i n=0;
Stack stack;
De tempDe;
if (v < 0 || v >= m_nVexNum) return NULL; //输入的顶点超过边界
tempDe.vex = v;
tempDe.i = 0;
tempPath = new Path;
tempPath->vexs[n++] = v;
tempPath->next = NULL;
isVisited[v] = true;
while(true) {
for (i = tempDe.i; i < m_nVexNum; i++) {
if (m_aAdjMatrix[tempDe.vex][i] > 0 && !isVisited[i]) {
isVisited[i] = true;
tempDe.i = i+1;
stack.push(tempDe);
tempDe.vex = i;
tempPath->vexs[n++] = i;
i = -1; //f
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3922 2017-05-16 14:10 实验2-4\GraphCPro\Debug\cl.command.1.tlog
文件 57524 2017-05-16 14:10 实验2-4\GraphCPro\Debug\CL.read.1.tlog
文件 4220 2017-05-16 14:10 实验2-4\GraphCPro\Debug\CL.write.1.tlog
文件 91 2017-04-28 15:12 实验2-4\GraphCPro\Debug\Edge.txt
文件 204336 2017-05-16 14:05 实验2-4\GraphCPro\Debug\Graph.obj
文件 94208 2017-05-16 14:10 实验2-4\GraphCPro\Debug\GraphCPro.exe
文件 406 2017-05-09 15:24 实验2-4\GraphCPro\Debug\GraphCPro.exe.em
文件 472 2017-05-09 15:26 实验2-4\GraphCPro\Debug\GraphCPro.exe.em
文件 381 2017-05-16 14:10 实验2-4\GraphCPro\Debug\GraphCPro.exe.intermediate.manifest
文件 1007180 2017-05-16 14:10 实验2-4\GraphCPro\Debug\GraphCPro.ilk
文件 86 2017-05-16 14:10 实验2-4\GraphCPro\Debug\GraphCPro.lastbuildstate
文件 2320 2017-05-16 14:10 实验2-4\GraphCPro\Debug\GraphCPro.log
文件 1068032 2017-05-16 14:10 实验2-4\GraphCPro\Debug\GraphCPro.pdb
文件 1449 2017-05-09 15:21 实验2-4\GraphCPro\Debug\GraphCPro.vcxprojResolveAssemblyReference.cache
文件 0 2017-05-09 15:24 实验2-4\GraphCPro\Debug\GraphCPro.write.1.tlog
文件 208 2017-05-09 15:24 实验2-4\GraphCPro\Debug\GraphCPro_manifest.rc
文件 2 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 2 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 2 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 2 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 2 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 2 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 3698 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 7562 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 2098 2017-05-16 14:10 实验2-4\GraphCPro\Debug\li
文件 46218 2017-05-16 14:02 实验2-4\GraphCPro\Debug\Main.obj
文件 790 2017-05-16 14:10 实验2-4\GraphCPro\Debug\mt.command.1.tlog
文件 650 2017-05-16 14:10 实验2-4\GraphCPro\Debug\mt.read.1.tlog
文件 326 2017-05-16 14:10 实验2-4\GraphCPro\Debug\mt.write.1.tlog
文件 1094 2017-05-09 15:26 实验2-4\GraphCPro\Debug\rc.command.1.tlog
............此处省略30个文件信息
- 上一篇:darwin.iso 8.5.8
- 下一篇:基本Qt的一笔画小游戏
相关资源
- 酒店管理系统基于Qt Creator5)
- 设备管理系统源码
- Python全栈学习笔记面向对象大作业:
- 一个超简单的企业管理系统(带ACCE
- PowerBuilder*图书馆管理系统*需求分析
- 数据库课设:图书管理系统报告
- 用汇编实现的学生成绩档案管理系统
- 教室管理系统.rar
- 基于MVC模式的会员管理系统
- 学生信息管理系统源码
- about 论坛信息管理系统
- 合同管理系统的源代码(附数据库)
- 保险公司管理系统(前台界面)
- Pb开发的酒店住宿管理系统
- ado数据库MFC图书管理系统vs2010
- 村居人口信息管理系统
- 数据库VFP课程设计
- 完整版家庭在线记账理财管理系统
- GUI银行管理系统
- 服装店进销存管理系统
- 数据库实现学生成绩管理系统选课管
- 课程作业:模拟仓库管理系统
- 教务管理系统需求分析(全集)
- 007出纳管理系统 v7[1].5.94 算法注册机
- c 课程设计 职工信息管理系统
- 书店销售管理系统 包附源代码
- 兔子养殖场管理系统
- 通用后台管理系统模板
- 软件工程 考勤管理系统分析与设计
- 波奇宠物商品商城管理系统
评论
共有 条评论