武汉理工大学数据结构综合实验——图与景区信息管理系统实践

本文介绍了武汉理工大学一个数据结构综合实验,通过创建景区信息管理系统,利用图的数据结构实现景点信息管理、路径导航、最短路径搜索等功能。实验涉及改进DFS算法、Prim算法构建最小生成树,并通过多种测试用例验证系统功能的正确性。
摘要由CSDN通过智能技术生成


实验目的

掌握图的存储结构和定义
掌握图的创建方法和图的应用
掌握图的两种遍历方法和应用
掌握迪杰斯特拉算法和应用
理解最小生成树的概念
掌握普里姆算法和应用 使用 C++、定义图的数据结构,结合迭代开发思路实现“景区信息管理”专题编程。

主要仪器设备及耗材

1.安装了Windows 10操作系统的PC机1台
2.PC机系统上安装了Microsoft Visual Studio 2019开发环境


以下是本篇文章正文内容,下面案例可供参考

一、实验要求

开发景区信息管理系统,对景区的信息进行整理。使用图的数据结构来保存景区景点信息,为用户提供创建图,查询景点信息,旅游景点导航,搜索最短路径,铺设电路规划等功能。在确保书上例子正确的情况下,添加自己创建的图来检查自己实现的功能。

二、分析与设计

依据上述的实验目的与要求,可导出实现的图与景区信息管理系统的流程为:
(1)创建图:从Vex.txt和Edge.txt中分别读取景点信息和道路信息,根据读取的景区信息创建景区景点图。
(2)查询景点:根据输入的景点编号,查询该景点及相邻景点的信息。
(3)旅游景点导航:从起始景点开始,遍历景区所有景点,记录所有无重复的路径。
(4)搜索最短路径:搜索两个景点之间的所有路径,找到其中距离最短的路径。
(5)铺设电路规划:根据景区景点图,构造一棵最小生成树,设计出一套铺设线路最短,但能满足每个景点都能通电的方案。

1.数据结构的设计

代码如下(示例):

//定义Vex结构体,存储图的顶点
struct Vex
{
   
	int num;//景区编号
	char name[20];//景点名字
	char desc[1024];//景点介绍
};

//定义Edge结构体,存储边的信息
struct Edge
{
   
	int vex1;//边的第一个顶点
	int vex2;//边的第二个顶点
	int weight;//权值
};


//定义图的存储结构
struct Graph
{
   
	int m_aAdjMatrix[20][20];//邻接矩阵
	Vex m_Vexs[20];//顶点信息数组
	int m_nVexNum;//当前图的顶点个数

};

//定义链表来保存所有路径
typedef struct Path {
   

	int vexs[20];//保存一条路径
	Path* next;//下一条路径

}*PathList;

2.核心算法设计

改进DFS算法

代码如下(示例):

void DFS(int nVex, bool bVisited[], int& nIndex, PathList& pList) {
   

	bVisited[nVex] = true;//该顶点被遍历
	pList->vexs[nIndex++] = nVex;//访问顶点编号为nVex的顶点

	//判断所有的顶点是否都已经被访问过									
	int vexnum = 0;
	for (int i = 0; i < m_Graph.m_nVexNum; i++)
		//如果当前i节点被访问过,则vexNum自加
		if (bVisited[i]) vexnum++;

	//如果所有的顶点都已经被访问过,就保存这一条路径
	if (vexnum == m_Graph.m_nVexNum)
	
  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值