《2022年我的课程设计-数据结构 .pdf》由会员分享,可在线阅读,更多相关《2022年我的课程设计-数据结构 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录一、设计目的,二、需求分析,2.1 设计内容,2.2 设计要求,三、概要设计,四、详细设计,4.1 定义结构体,4.2 建立 introduce()函数,4.3 定义实现邻接矩阵,4.4 定义 Prim 函数实现最小生成树,4.5 主函数,五、调试分析 ,六、分析与总结 ,七、参考文献 ,附录:程序源代码程序运行结果校园网布线问题一、设计目的数据结构是研究数据以及数据间关系的一门科学,主要研究数据之间的逻辑结构及其基本操作在计算机中的表现和实现。此门课不仅是计算机专业重要的专业基础课,也是从事计算机软件开发所必须的专业知识,具有较强的抽象性和动态性。通过对校园网布线问题的设计使我们能够更好
2、的掌握邻接矩阵和普里姆算法实现图的最小生成树的基本运算的实现,加深对邻接矩阵和普里姆的理解,培养我们对实际问题的理解和解决问题,使我们能够更好的理解和掌握书本中的内容,理解掌握算法设计所需要的方法和技术,为以后学习计算机理论打好基础。二、需求分析2.1 设计内容对于设计校园网布线问题,我们应该首先进行实地考察,调查本校园建筑物有哪些,哪些建筑物之间能够直接到达且两个建筑物间的直接距离。设校园网布线系统是一个可以查询从初始建筑物1游遍 n 个建筑物的路径和最短距离,输入初始建筑物的编号和要去到达建筑物的编号以及建筑物间的距离,就可得出从初始建筑物到其他建筑物的路径和最短距离。此系统还可以查询本系
3、统内所包含的建筑物的详细信息,如:B座教学楼隶属于安徽工程科技学院,为机械系与计算机系的教学办公楼,集成教研室、实验室、办公室的综合性办公楼。2.2 设计要求(1)宏定义边(即建筑物间距离)的最大值为机内允许的最大值MAXCOST 32767 ,然后定义建筑物类型,最大建筑物的数量,边上的权值类型,定义结构体包含建筑物表,邻接矩阵和系统内现有的建筑物数和边数。(2)通过从键盘输入建筑物信息和建筑物间距离的信息和要进行的服务,程序会通过对相关函数的调用正确处理得到我们想要的真确的信息。(3)输入要求:输入建筑物数量,建筑物间的路径数,建筑物的代码,和建筑物与建筑物间的距离,和想要进行的操作的代码
4、。三、概要设计此系统的建立与实现分为四个模块,建筑物介绍,建立邻接矩阵,用普里姆函数实现最小生成树和主函数等四个模块。这几个函数实现了理论知识向实际应用的转化,将建筑物间距离转化为最小生成树问题的实现,方便解决实际问题。四、详细设计4.1 定义结构体typedef char VertexType; typedef int ArcType;/* 边上的权值类型应由用户定义 */ typedef struct VertexType vexsMaxSize;/* 顶点表 */ ArcType arcsMaxSizeMaxSize;/* 邻接矩阵,可看做边表*/ int vexnum,arcnum;
5、AdjMatrix; 4.2 建立 introduce()函数实现建筑物详细信息的查询名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - void introduce() 输入建筑物编号;Switch() case 1; printf(查询信息 ); ,/建筑物介绍4.3 定义实现邻接矩阵 CreateMGraph(AdjMatrix *G) /*建立无向图的邻接矩阵表示 */ printf(input vexnum arcnum:
6、n); printf(请输入建筑物总数和建筑物间总共拥有的路数 n); scanf(%d%d,&G-vexnum,&G-arcnum); printf(请输入各建筑物 n); getchar(); for(i=0;ivexnum;i+)/* 读入顶点信息,建立顶点表 */ G-vexsi=getchar(); getchar(); for(i=0;ivexnum;i+) for(j=0;jvexnum;j+) G-arcsij=32767; printf(input arc wn); printf(请输入各个建筑物间的距离n); for(k=0;karcnum;k+)/* 读入 e 条边,建立
7、邻接矩阵*/ scanf(%d%d%d,&i,&j,&w); G-arcsij=w; G-arcsji=w; 4.4 定义 Prim 函数实现最小生成树void Prim(AdjMatrix G,int closevertex) int lowcost100,mincost; for(i=1;iG.vexnum;i+)/* 初始化 */ lowcosti=G.arcs0i; closevertexi=0; lowcost0=0; closevertex0=0; for(i=1;iG.vexnum;i+)/* 寻找当前最小权值的边的顶点*/ mincost=MAXCOST; j=1;k=1; w
8、hile(jG.vexnum) if(lowcostjmincost &lowcostj!=0) mincost=lowcostj; k=j; j+; printf(vertex:%d,arc:%dn,k,mincost); printf(建筑物 , 最短距离 n); lowcostk=0; for(j=1;jG.vexnum;j+)/* 修改其他顶点的权值和最小生成树顶点序号*/ if(G.arcskjlowcostj) lowcostj=G.arcskj; closevertexj=k; 4.5 主函数,查询功能的实现和调用其他函数以实现此程序的功能void main() AdjMatri
9、x G; CreateMGraph (&G); while(1) printf(-欢迎使用校名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 园网布线系统 !-n); printf(此系统的功能为由学院正门到校内所有建筑物的路径和最短距离和查找建筑物的详细信息 n); printf(1.建筑物信息查询 , 请按i (introduc)键n); printf(2.建筑物最短路径查询 ,请按s 键n); printf(3.退出系统 ,
10、请按 e (exit)键n); printf(请选择服务 :); scanf(n%c,&k); switch(k) case i: printf(进 入 建 筑 物 信 息 查询:); introduce (); break; cases : printf(进 入 最 短 路 径 查询:); Prim( G,close); CreateMGraph(&G); break; case e: exit(0); default: printf(输入信息错误! n 请输入字母 i 或 s 或 e.n); break; 六、分析与总结经过几天的忙碌终于把数据结构课程设计给做了出来,这是我第一次一个人完成
11、关于程序开发的实践,发现并没有自己想象中的困难,对以往数据结构这门的认识又有了新的改变,以前总是认为对基本知识还可以看懂听明白,但是一到自己编写算法时总感觉无从下手,和课堂上所学的内容不能很好的衔接,不能够融会贯通。但是通过这几天对“校园网布线系统”的编写,在一边摸索一边编写的过程中我发现数据结构是一门很有意思很具挑战的功课,她不仅让我们的观察力变得更加敏锐,还使我们的思维能力有了很大的提高,而且让我们的视野更加开阔。在这次课程设计的过程中是我更加熟练了普里姆算法、邻接矩阵、最小生成树和函数调用的使用,而且让我更加熟悉了C 语言的使用。在这次做课程设计的过程中我们有熟悉了正本教程,让我们为期末
12、考试做了更充足的准备,让我们能够更好的复习。这次通过对实际生活的应用,让我们明白了我们所学的知识并不是只是理论空想,能够让我们能够更好的运用到生活中去,让我们能够学以致用。让我们能够在遇到问题的时候分析、归纳、总结。七 参考文献谭浩强C语言程序设计清华大学出版社张红霞数据结构教程与实训北京理工大学出版社严蔚敏吴伟民数据结构清华大学出版社附录:程序源代码#include #include #define MaxSize 100 typedef char VertexType; typedef int ArcType; typedef struct VertexType vexsMaxSize;
13、ArcType arcsMaxSizeMaxSize; int vexnum,arcnum; AdjMatrix; void introduce() /* 建筑物介绍 */ int a; printf(您想查询哪个建筑物的详细信息?请输入建筑物编号:); scanf(%d,&a); getchar(); printf(n); switch(a) case 1: printf(0:学院正门 nn安徽工程科技学院主要出入点。nn);break; case 2: printf(1:A座办公楼 nn 学院最大名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
14、- - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 的办公楼,集合学院教务科、财务科、领书处等综合性办公楼,处理学院各种信息与教务的办公楼。 );break; case 3: printf(2:B座办公楼 nn 安徽工程科技学院机械系与计算机系的教学办公楼,集成教研室、实验室、办公室的综合性办公楼。nn);break; case 4: printf(3:D座办公楼 nn 安徽工程科技学院管理系与纺服系的办公楼,主要处理管理系与纺服系的一些事务,内有教研室、 实验室、是一座综合性办公楼nn);break; case 5: pr
15、intf(4:东图书馆 nn安徽工程科技学院的图书馆,集纸质文献、电子文献为一体的多层次的文献信息资源的现代化图书馆。nn);break; case 6: printf(5:校医院 nn 安徽工程科技学院医院,同学、老师医疗诊断体检的地方。nn);break; case 7: printf(6:塑胶田径场 nn 安徽工程科技学院最大的运动场地,主要举办运动会、足球赛以及体育训练的地点。 nn);break; case 8: printf(7:学术报告厅 nn 安徽工程科技学院各系举办学术报告、知识竞赛及文艺演出的地点。 nn);break; case 9: printf(8:师生活动中心nn安
16、徽工程科技学院最大的会议中心,主要用于召开一些大型会议及大型演出的场所。nnn);break; case 10: printf(9:地下超市 nn安徽工程科技学院的购物一条街,有食品商店、 时尚精品店、超市、邮递中心、话费中心、服饰商店等。nn);break; case 11: printf(10:松庐餐厅 nn安徽工程科技学院中比较有名的餐厅,主营各项美食,是同学们聚餐聚会的好地方。nn);break; case 12: printf(11:一食堂 nn同学们日常吃饭的地方之一。nn);break; case 13: printf(12:二食堂 nn同学们日常吃饭的地方之一。nn);brea
17、k; case 14: printf(13: 水房浴室 nn同学们打开水、洗浴的地方。nn);break; case 15: printf(14:5幢教学楼 nn同学们上课的地方。 nn);break; default: printf(建筑物编号输入错误!请输入1-15 的数字编号! nn); break; /*introduce*/ #define MAXCOST 32767 void CreateMGraph(AdjMatrix *G) int i,j,k,w; printf(-欢迎使用校园网布线系统 !-n); printf(1学院正门 n); printf(2 A座办公楼 n); pr
18、intf(3 B座办公楼 n); printf(4 D座办公楼 n); printf(5东图书馆 n); printf(6校医院 n); printf(7塑胶田径场 n); printf(8学术报告厅 n); printf(9师生活动中心 n); printf(10地下超市 n); printf(11松庐餐厅 n); printf(12一食堂 n); printf(13二食堂 n); printf(14水房浴室 n); printf(15 5幢教学楼 n); printf(input vexnum arcnum:n); printf(请输入建筑物总数和建筑物间总共拥有的路数 n); scanf
19、(%d%d,&G-vexnum,&G-arcnum); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - printf(请输入各建筑物 n); getchar(); for(i=0;ivexnum;i+) G-vexsi=getchar(); getchar(); for(i=0;ivexnum;i+) for(j=0;jvexnum;j+) G-arcsij=32767; printf(input arc wn); printf
20、(请输入各个建筑物间的距离n); for(k=0;karcnum;k+) scanf(%d%d%d,&i,&j,&w); G-arcsij=w; G-arcsji=w; void Prim(AdjMatrix G,int closevertex) int lowcost100,mincost; int i,j,k; for(i=1;iG.vexnum;i+) lowcosti=G.arcs0i; closevertexi=0; lowcost0=0; closevertex0=0; for(i=1;iG.vexnum;i+) mincost=MAXCOST; j=1;k=1; while(jG
21、.vexnum) if(lowcostjmincost &lowcostj!=0) mincost=lowcostj; k=j; j+; printf(vertex:%d,arc:%dn,k,mincost); printf(建筑物 , 最短距离 n); lowcostk=0; for(j=1;jG.vexnum;j+) if(G.arcskjlowcostj) lowcostj=G.arcskj; closevertexj=k; void main() char k; int i,j; int close100; AdjMatrix G; CreateMGraph (&G); for(i=0
22、;iG.vexnum;i+) printf(%ct,G.vexsi); for(j=0;jG.vexnum;j+) printf(%dt,G.arcsij); printf(n); while(1) printf(-欢迎使用校园网布线系统 !-n); printf(此系统的功能为由学院正门到校内所有建筑物的路径和最短距离和查找建筑物的详细信息 n); printf(1.建筑物信息查询 , 请按 i (introduc)键n); printf(2.建筑物最短路径查询 ,请按 s 键n); printf(3.退出系统 ,请按e (exit)键n); printf(请选择服务 :); scanf(n
23、%c,&k); switch(k) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - case i: printf(进入建筑物信息查询:); introduce(); break; case s: printf(进 入 最 短 路 径 查询:); Prim( G,close); CreateMGraph(&G); break; case e: exit(0); default: printf(输入信息错误! n请输入字母i 或 s 或 e.n); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -