- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构课程设计》报告
题 目旅游区导游图
专 业计算机科学与技术
班 级
学 生###
13 旅游区导游图
题目内容
问题描述:
设某个旅游区共有n个旅游景点(n 10),每个旅游景点都和相邻的m个旅 游景点(m^2, mn有直接的道路(有对应的距离)相通,请设计一个简易的 旅游区导游系统。
以(Vi ,Vj ,d)的形式从键盘输入建立该旅游区的旅游景点图,其中: V和V
表示两个不同的旅游景点, d 表示这两个景点之间的道路距离;该旅游景点图采 用邻接矩阵存储结构 ( 数组) 。
实现要求:
⑴ 旅游景点图的输出:分别以邻接矩阵、邻接链表的方式输出该旅游景点图。 ⑵ 相邻景点查询:假设对于每个景点,设置有简易的信息查询,要求能给出与 该景点相邻的所有景点 ( 有直接的道路相通 ) 及对应的距离。
⑶ 景点路线查询:假设对于每个景点,设置有景点路线查询,要求能给出从该 景点出发到任一其它景点的最短简单路径及距离。
⑷ 景点路线综合查询:对于该旅游区的任意两个景点,找出它们之间的最短简 单路径及距离。
⑸ 最佳旅游路线确定:假设该旅游区的入口也是出口,请确定一条最佳的旅游 线路,该线路必须经过所有的旅游景点 (有些景点可以重复经过) 且走的路最短 ⑹ 设计一个菜单,上述操作要求都作为菜单中的主要菜单项。
本人完成的工作
完成的工作:首先是用邻接矩阵的存储形式建立无向带权图,然后将邻接矩阵 转换为邻接链表,最后用狄克斯特拉函数求出后面的三道有关最短路径的小题, 设计主函数。
所采用的数据结构
邻接矩阵的数据结构, 包括(弧/ 边的结构定义、 图的结构定义) 邻接链表的数据结构,包括(弧 / 边的结点定义、邻接表头结点 定义、图的结构定义)
数据结构的定义
// 邻接矩阵结构体
typedef struct
{ char vex1, vex2 ; /* 弧或边所依附的两个顶点 */
int ArcVal ; /* 弧或边的权值 */
}ArcType ; /* 弧或边的结构定义 */
typedef struct
{
int vexnum, arcnum ; /* 图的当前顶点数和弧数 */
char vexs[MAXVEX] ; /* 顶点向量 */
int adj[MAXVEX][MAXVEX];
}MGraph ; /* 图的结构定义 */
// 邻接链表结构体
}
}
typedef struct ANode//弧的结点结构类型{ int adjvex; //
typedef struct ANode
//
弧的结点结构类型
{ int adjvex; //
int info; // struct ANode *nextarc; //
} ArcNode;
typedef struct Vnode //
{
char data; // ArcNode *firstarc; // } VNode;
typedef struct
{
VNode AdjList[MAXVEX]; int vexnum,arcnum; // } ALGraph; //
所设计的函数
该弧的终点位置
该弧的相关信息 , 这里用于存放权值
指向下一条弧的指针
邻接表头结点的类型
顶点信息
指向第一条弧
图中顶点数 n 和边数 e
图的邻接表类型
对于每个主要函数必须给出所采用的算法思想和程序框图; 邻接矩阵和邻接链表初始化函数
MGraph *Init_MGraph()
/* 图的初始化 */
{
MGraph *G;
G=(MGraph *)malloc(sizeof(MGraph)) ;
G-vexnum=0 ; G-arcnum=0 ; /* 初始化顶点数、边数 */
return(G) ;
ALGraph *lni t_ALGraph()
/* 图的初始化*/
{
ALGraph *G;
G=(ALGraph *)malloc(sizeof(ALGraph));
G-vex num=O ;
G-arc num=O; /* 初始化顶点数*/
return(G);
}
图中顶点定位的函数,判断顶点是否重复输入了
int LocateVex(MGraph *G, char vp)
/* 图中顶点的定位,若图中有顶点 vp,返回其在顶点数组的下标值 */
{
int k ;
for (k=0; k=G-vex num; k++)
if (G-vexs[k]==vp) return(k);
{
int k, j ;
if (G-vex nu m=MAXVEX)
printf( 图中顶点数已达到最多!\n);
else
{
if (LocateVex(G, vp)==-1)
k=G-vex num ; G-vexs[G-vex nu m++]
您可能关注的文档
最近下载
- 岛津原子吸收AA6800说明书.pdf
- 2025湘美版美术八年级上册第一单元第1课《假期视觉笔记》课件.ppt
- 体例格式4:工学一体化课程《小型网络安装与调试》工学一体化课程考核方案.docx VIP
- 党课培训课件.ppt VIP
- 2025年江西省辅警招聘考试试题带解析及完整答案【历年真题】.docx VIP
- 拉法基瑞安水泥健康与安全管理.pdf VIP
- 学堂在线人像摄影(2025秋)考试答案.docx VIP
- 日立扶梯HE15控制装置维保手册.doc
- 地表注浆施工方案施工组织.docx VIP
- 2025-2026学年高中信息技术粤教版2019选修2 网络基础-粤教版2019教学设计合集.docx
文档评论(0)