1、 课程设计报告课程设计报告 课程名称课程名称 数据结构数据结构 课题名称课题名称 校园导航系统校园导航系统 专专 业业 计算机科学与技术计算机科学与技术 目目 录录 1、数据结构课程设计任务书、数据结构课程设计任务书 . 1 1.1、题目、题目 . 1 1.2、要求、要求 . 1 2、详细设计、详细设计 . 1 2.1、程序中所采用的数据结构及存储结构的说明、程序中所采用的数据结构及存储结构的说明. 1 2.2、算法的设计思想、算法的设计思想 . 2 3、调试与测试:、调试与测试: . 2 3.1、调试方法与步骤:、调试方法与步骤: . 2 3.2、测试结果的分析与讨论:、测试结果的分析与讨论
2、: . 2 4、时间复杂度的分析:、时间复杂度的分析: . 4 5、源程序清单和执行结果、源程序清单和执行结果 . 5 6、C 程序设计总结程序设计总结 . 9 7、致谢、致谢 .10 8、参考文献、参考文献 .10 1 1、数据结构课程设计任务书、数据结构课程设计任务书 1.1、题目、题目 校园导航问题 1.2、要求、要求 设计你的学校的平面图,至少包括 10 个以上的场所,每两个场所间可以有 不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短 路径)。 1)设计校园平面图,在校园景点选 10 个左右景点。以图中顶点表示校园 内各景点,存放景点名称、代号、简介等信息;以边
3、表示路径,存放路径长度等 有关信息。 2)为来访客人提供图中任意景点相关信息的查询。 3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条 最短路径。 2、详细设计、详细设计 模块功能说明:如函数功能、入口及出口参数说明,函数调用关系描述等; 2.1、程序中所采用的数据结构及存储结构的说明、程序中所采用的数据结构及存储结构的说明 (1)图。采用邻接矩阵存储,其中图所用到的结构体为: typedef struct SeqList vertices; /表示图中的顶点 int EdgeMaxVerticesMaxVertices; /表示图中的边 int numOfEdge; /表示
4、图中边的数目 AdjMGraph; (2)景点。用顺序表存储。所用到的结构体为: typedef struct char name20; /顶点名称 int code; /顶点代号 char introduction50; /顶点信息简介 DataType; (3)景点之间的连接描述,所用到的结构体为: typedef struct int row; int col; int weight; 2 RowColWeight; 用图来存放所提供的所有景点, 然后用线性表来存放每一个景点的信息, 其 中包括景点的名称,代号,信息简介,以及其它的一些信息。这样就将对景点的 操作,变成对图中各顶点的操作
5、 。 2.2、算法的设计思想、算法的设计思想 根据题目分析,对于信息查询与修改功能,设计如下: 1,输入景点名称 2,从线性表头扫描到表尾, if(找到该景点) 输出景点结构体信息 else 输出提示信息找不到该顶点 实现查找最短路径,设计如下: 1, 景点名称 2,根据输入的信息找到它们所在的线性表中的位置 3,调用 Floyd 算法找出最短路径 4,输出信息 3、调试与测试:、调试与测试: 3.1 调试过程中遇到的问题与解决方案:调试过程中遇到的问题与解决方案: 关于最短路径的输出问题。在进行最短路径输出时,我刚开始时只能正序输出,具 体的描述为:比如,我要查寻从东区到东湖的最短路径,那么
6、它能正确输出结果,他的形式 为:东区 主楼 西体育馆 隧道 北大门 东湖。但是,当我逆向 输出时,得到的结果却有点问题,经过分析调试后,找到了错误的所在。在找最短路径的时 候我用的是 Floyd 算法,在这个算法中有三重循环,形式均为:for(k=0;k“,G.vertices.listvaluei.name); printf(“%sn“,sceneryname1); else for(i=0;i“,G.vertices.listvaluei.name); printf(“%sn“,sceneryname1); /详细 Operation.h 头文件 void menu(); /查询景点信息的函数 void Information1() char scenery