数据结构与算法大作业.doc
《数据结构与算法大作业.doc》由会员分享,可在线阅读,更多相关《数据结构与算法大作业.doc(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date数据结构与算法大作业数据结构与算法大作业课 程 设 计 说 明 书课程名称: 数据结构与算法 设计题目: 校园导游程序 院 系: 计算机科学与信息工程学院 学生姓名: 丁守亮 学 号: 201003030007 专业班级: 10级软件工程一班 指导教师: 闫怀平 2012年 6 月 15日-课 程 设 计 任 务 书设计题目校园导游程序学生姓名丁守亮所在院系计算机科学
2、与信息工程学院专业、年级、班10级软件工程一班设计要求:应用无向网表示学校的校园景点平面图(1) 建图以图中顶点表示主要景点,并存放景点的编号、名称、简介等信息;图中的边表示景点间的道路,存放路径长度等信息。(2) 查询该系统可以查询景点的信息; 查询图中任意两个景点间的最短路径; 查询图中任意两个景点间的所有路径。(3) 更新 可以进行景点的更新,如去除、增添景点和路径,可以随时对景点间路径长度的更新。学生应完成的工作:根据设计要求,我们需完成如下工作: 程序编写方面:(1)建立无向图,保存景点信息和路径信息;(2)景点相关信息查询函数;(3)查询图中任意两个景点间最短路径函数;(4)查询图
3、中任意两个景点间的所有路径函数;(5)更新景点信息函数,需要完成对以下函数的调用1)增加景点的信息函数;2)增加道路的信息函数;3)删除景点的信息函数;4)删除道路的信息函数;5)更新道路权值的信息函数。 (6)建立校园景点平面图; (7)对(2)、(3)、(4)、(5)、(6)功能函数调用函数。 其他方面:(1) 对编写完成的程序进行上机调试;(2) 运行程序;(3) 对运行结果进行分析;(4) 撰写课程设计说明书(5) 完成设计答辩。参考文献阅读:1 严蔚敏、吴伟民.据结构(c语言版).北京:清华大学出版社.2009 2 谭浩强.C程序设计(第四版).北京:清华大学出版社.2010 3 严
4、蔚敏、吴伟民.据结构题集.北京:清华大学出版社.2009工作计划:本次课程设计时间为20112012学年度第二学期的第17、18周1、第一周的第一天:小组布置设计题目;说明进度安排。2、第一周的第二天:小组审题,查阅资料,进行设计前的必要资料准备。3、第一周的第三天、第四天、第五天:程序编写、上机调试4、第二周的第一天至第三天: 上机调试程序、结果分析。5、第二周的第四天: 撰写设计报告。6、第二周的第五天: 设计答辩及成绩评定。任务下达日期: 2012年 6月 4 日 任务完成日期: 2012年 6月 15 日指导教师(签名): 学生(签名): 校园导游程序摘 要:随着现代旅游业的快速发展,
5、图文声像导游方式和实地口语导游方式都已经不能满足现阶段旅游者的需求,信息化的飞速发展造就了地理信息系统(GIS)和全球定位系统(GPS),促使消费者更多的选择自助游和自驾游等方式出行。而近年来高等院校的发展使得高校也成为了一个景点。如何让游客以最短的时间到达旅游目的地就是本文所寻求解决的问题。文章通过最短路径算法,并结合实际情况以高等院校为例采集所需要的数据,理论上使得游客可以轻松的寻找到最适合自己的旅游线路,并以此为依据合理安排自己的行程。 关键词:数据结构 图 结点 边 权 景点 路径 距离 目 录 1.设计背景1 1.1课程设计目的1 1.2题目要求12.设计方案2 2.1功能构思2 2
6、.2方法实现33. 方案实施4 3.1基本操作4 3.2各步操作函数模块4 4.结果和结论17 4.1运行结果17 4.2结论255. 收获和致谢266. 参考文献277. 附件28 1. 设计背景1.1 课程设计目的 数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已成为其他理工专业的热门选修课。从课程性质上讲,数据结构是一门专业技术基础课。它的教学要求是:学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当地逻辑结构,存储结构和其相应的算法,并初步掌握算法的时间分析和空间分析的技术。另一方面,本课程的学习也是复杂程序的设计的训练过程,要求学生编
7、写的程序结构清楚和正确易读,符合软件工程的规范。如果说高级语言程序设计的训练过程,要进行结构化的程序设计的初步训练的话,那么数据结构就要培养我们的数据抽象能力。本次课程设计的目的就是培养学生运用数据结构中基本算法进行处理现实中的问题的能力。通过本次课程设计,可以让学生更好地掌握数据结构中的各类基本算法,并运用C语言完成简单的编程,为以后更好的学习高级编程语言打下基础。1.2题目要求 本次设计要求两人合作共同完成: 1.景点信息和路径信息保存在文本文件,景点个数不少于20个 2.查询各景点的相关信息; 3.查询图中任意两个景点间的最短路径。 4.查询图中任意两个景点间的所有路径。 5.增加、删除
8、、更新有关景点和道路的信息。2.设计方案2.1 功能构思2.1.1问题的分析和结构的设计思路 1) 在安阳工学院校内选取具有代表性的景点,把这些景点看作无向带权图的各个结点,景点间的路径看作无向图的边,两景点之间的距离以各对应边上的权值表示。2)校园咨询程序要为用户提供最佳路径查询,根据用户提供的起始景点和终端景点输出最佳的路径,此时,可以运用弗洛伊德算法函数完成最短路径的输出。3)校园咨询程序可以用迪杰斯特拉算法完成在游客只提供起始景点的情况下,告知游客到校园内其余景点的最短路径。4)景点信息的更新则可以在无向图中以添加、删除结点,添加、删除边以及改变各边权值表示。2.1.2校园导游咨询程序
9、的算法思想及设计1)由校园各景点建立起的无向带权图,采用邻接矩阵的形式进行存储,其中点信息的存储形式如“strcpy(c.vexs0.name ,南门); strcpy(c.vexs0.introduction , 安阳工学院正门)”所示,各边以及路径长度的则以c.arcs ij.adj =Infinity表示(其中i,j表示景点的编号)。2)校园任意两景点间的最短路径问题则可以用弗洛伊德算法实现,3)显示校园其中一个景点到其余各景点的最短路径的过程用迪杰斯特拉算法求一个结点到其余各结点的最短路径像似,因此我们可以采用迪杰斯特拉算法实现。4)校园景点的更新,我们则可以在无向图中做出相应的表示。
10、2.1.3校园导游咨询程序的设计流程图: 校园导游程序查询两景点间的所有路径查找两景点间最短路径 创建校园平面图 初始化无向图查询一个景点到其余各景点最短路径图形更新更新边的权值插入和删除边插入和删除结点2.2方法实现2.2.1基本操作函数实现 1.建立无向图的初始化 mgraph initgraph()2. 查找景点在图中的序号 int locatevex(mgraph c,int v) 3.求序号为m,n景点间的长度不超过8个景点的路径 void path(mgraph c, int m,int n,int k) 4.打印两景点间的景点个数不超过8的所有路径。调用2 int allpath
11、(mgraph c) 5.用迪杰斯特拉算法,求出一个景点到其他景点间的最短路径,并打印 void shortestpath_dij(mgraph c) 6.构造图的邻接矩阵 int creatgragh(mgraph &c) 7.建图、更新信息、删除、增加结点和边 int newgraph(mgraph &c) /新建图 int enarc(mgraph&c) /增加边 int envex(mgraph&c) /增加结点 int delvex(mgraph&c) /删除结点 int delarc(mgraph&c) /删除边 8.使用FLOYD算法查询两景点间的最短路径 void shorte
12、stpath_floyd(mgraph c) 3. 方案实施3.1基本操作 3.1.1完成图的各个模块以及各模块之间的调用 Main()Allpath()Printmatrix()Printfmap()Changegraph()shortestpath_dij()browsecompus()Seeabout()shortestpath_floyd()delvexCreatgraghnewgraphenarcenvexdelarc3.2各步操作函数模块 3.2.1定义边、点、图结构体以及整形变量 typedef struct arcell /边结构体 int adj; arcell,adjmat
13、rixMaxVertexNumMaxVertexNum; typedef struct vexsinfo /点信息结构体 int position; char name32; char introduction256; vexsinfo; typedef struct mgraph /图结构体 vexsinfo vexsMaxVertexNum; adjmatrix arcs; int vexnum,arcnum; mgraph; 3.2.2无向图的邻接矩阵存储 mgraph initgraph()/对图初始化 int i=0,j=0; mgraph c; c.vexnum =21; c.ar
14、cnum =36; for(i=0;ic.vexnum ;i+) c.vexsi.position =i;strcpy(c.vexs0.name ,南门);/依次输入顶点信息strcpy(c.vexs0.introduction , 安阳工学院正门);strcpy(c.vexs1.name ,报告厅);strcpy(c.vexs1.introduction ,学生聆听名人演讲的地方); strcpy(c.vexs2.name ,行政楼);strcpy(c.vexs2.introduction ,教务后勤办公处); strcpy(c.vexs3.name ,主教楼);strcpy(c.vexs3
15、.introduction ,考研学生的自习室); strcpy(c.vexs4.name ,明德湖);strcpy(c.vexs4.introduction ,学生早读之处);strcpy(c.vexs5.name,求索广场);strcpy(c.vexs5.introduction ,因有八卦图故名求索); strcpy(c.vexs6.name ,网球场);strcpy(c.vexs6.introduction ,网球运动绝佳圣地); strcpy(c.vexs7.name,足球场);strcpy(c.vexs7.introduction ,每年大学生春季运动会在这里举办);strcpy(
16、c.vexs8.name ,宿舍楼);strcpy(c.vexs8.introduction ,校内女生宿舍,离餐厅很近);strcpy(c.vexs9.name, 餐厅);strcpy(c.vexs9.introduction , 校内学生在这里就餐); strcpy(c.vexs10.name ,羽毛球场);strcpy(c.vexs10.introduction ,学生运动好去处);strcpy(c.vexs11.name ,工行取款机);strcpy(c.vexs11.introduction ,方便学生取钱的地方);strcpy(c.vexs12.name ,医务室);strcpy(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 作业
限制150内