资源简介
开发景区管理系统,对景区进行管理。使用图的数据结构来保存景区景点信息,为用户提供
创建图、查询景点信息、景点导航、搜索最短路径、铺设电路规划等功能(共三次实验)。
景点数据:景点信息(附件中的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的一笔画小游戏
相关资源
- 图片管理系统
- 图书管理系统测试分析报告
- 人事管理系统人事管理系统
- 基于RFID的智能物流管理系统
- vfp 学生管理系统
- 某农电管理系统源代码
- 用电管理系统
- 初级struts2应用-学生信息管理系统
- 设备管理系统完整版
- 仓库管理系统项目开发文档13个
- 大学生日程管理系统
- 家政管理系统毕业设计课题含论文
- 期刊管理系统
- 点菜系统包含服务系统和后台管理系
- VFP 工资管理系统 不错哦
- 毕业论文与设计仓库管理系统
- MyKTV后台管理系统
- 社区居民健康档案管理系统
- 山东晨晖老预付费管理系统2.0.zip
- 个人信息管理系统含毕业论文
- 酒店点菜管理系统设计文档
- KTV管理系统Swing界面,含源码
- 文献管理系统文档软件工程大作业
- 图片管理系统 (数据库版)
- 酒店管理系统程序及源代码
- delphi版医院管理系统源码
- 仓储管理系统数据库设计.rar
- 水果销售管理系统
- 基于IC卡的网吧管理系统的实现
- 基于web的健身中心管理系统
评论
共有 条评论