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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实验目的

掌握图的存储结构和定义
掌握图的创建方法和图的应用
掌握图的两种遍历方法和应用
掌握迪杰斯特拉算法和应用
理解最小生成树的概念
掌握普里姆算法和应用 使用 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_nVexNu
1.实验目的 通过“片压缩编码”的编程实践,学习树、遍历二叉树、哈夫曼树、哈夫曼编码和他们的编程应用。 (1)掌握树的存储结构 (2)掌握二叉树的三种遍历方法 (3)掌握并理解Huffman树、Huffman编码等知识和应用 (4)掌握文件的操作 (5)使用Huffman算法实现像压缩程序 2.实验内容 使用Huffman压缩算法,对一幅BMP格式的片文件进行压缩。片文件名为“Pic.bmp”,压缩后保存为“Pic.bmp.huf”文件。使用VS2010作为开发工具,开发一个控制台程序,使用Huffman压缩算法片文件“Pic.bmp”进行压缩。具体要求如下: (1)读取原文件,统计权值: 运行程序,输入文件名。 以“Pic.bmp”文件为例。若文件存放在F盘根目录下,输入文件完整路径“F:\Pic.bmp”。按回车结束。以字节流的方式,只读打“Pic.bmp”文件。 逐字节读取文件,统计文件中256种字节重复的次数,保存到一个数组中int weight[256]中。 (2)生成Huffman树 根据(1)中统计的结果,构建Huffman树。定义一个结构体来记录每个节点的权值、父节点、左孩子和右孩子。使用结构体数组来存储这个Huffman树。 (3)生成Huffman编码 遍历(2)中生成的Huffman树,记录256个叶子节点的Huffman编码,保存在字符串数组中。 (4)压缩原文件 使用Huffman编码对原文件中的字节重新编码,获得压缩后的文件数据。 (5)保存压缩文件 将编码过的数据,保存到文件“Pic.bmp.huf”中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值