1、计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2、设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。数据结构课程设计报告 第 1 页,共 页3课程设计说明
2、书一需求分析问题描述中国移动公司正在积极推广3G通信应用,计划在江苏高校之间建立一个专用通信网络,请为其规划一个投资最省的通信线路架设方案。数据需求高校(高校名称,地址,数量)高校间的线路线路的成本功能需求能够构造通信网络系统,编辑通信网络系统,销毁通信网络系统,添加高校,删除高校,修改高校名,添加高校间的线路,删除高校间的线路,修改线路的成本,能生成最佳方案,输出通信网络系统,保存通信网络系统。性能需求输出方案的结果直观、明确二概要设计高校专用通信网络建设构造通信网络编辑生成最佳方案输出保存销毁添加删除高校修改名线路成本间的ADTLinearList数据元素:D=ai|aiD0,i=1,2,
3、n,n0,D0为高校关系:S=ai,ai+1|ai,ai+1D0,i=1,2,n-1基本操作:InitList(L) 初始化L为空表DestoryList(L) 销毁LClearList(L) 将置为空表ListLength(L) 若为空表则返回0,否则返回表中元素个数Locate(L,e) 若中存在元素e则将当前指针指向所在位置并返回真GetData(L,i) 返回中第i个元素的值InsList(L,I,e) 在个位置插入e,L的长度增加1DelList(L,I,&e)删除的第个元素,并用返回其值,L长度减少ADTLinearList数据结构课程设计报告 第 2 页,共 页数据定义:type
4、defstructArcNodeintadj;/权值ArcNode;struct stringvexsMAX_VERTEX_NUM;/顶点ArcNodearcsMAX_VERTEX_NUMMAX_VERTEX_NUM;/邻接矩阵vexnum,arcnum;/顶点数和边数graph;/图的类型stringadjvex;lowcost;minside;/求最小生成树时的辅助数组的类voidmenu(graph*g); /菜单Editgraph(graph /编辑通信网络系统Creategraph(graph*g) /创建通信网络系统InsertVex(graph*g,stringv) /添加高校C
5、hangeVex(graphv) /修改高校名InsertArc(graphv,stringw) /添加高校间的路线DeleteArc(graphw) /删除高校间的路线ChangeWeight(graphw)/修改高校间的路线及其成本Destroygraph(graph*g) /销毁通信网络系统Display(graph*g) /输出通信网络系统save(graph*g) /保存通信网络系统main()主函数Menu()菜单m nInPutNumber(m)Creategraph() InsertVex()三详细设计创建通信系统*g)DeleteVex()ChangeVex()Destory
6、graph()数据结构课程设计报告 第 3 页,共 页i,j,k,w;va,vb;读取文件通信网络.txtif(未找到文件)cout(*g).vexsi;初始化邻接矩阵for(j=0;j(*g).vexnum;+j)(*g).arcsij.adj=INFINITY;/网for(k=0;kvbw;i=LocateVex(g,va);j=LocateVex(g,vb);无向网infile.close();1;开始能否读取文件NYOpenerror创建成功数据结构课程设计报告 第 4 页,共 页结束添加高校v)/在图g中增添新顶点vif(顶点数为0)未建立通信网络系统!n;system(暂停);Ed
7、itgraph(g);请输入要添加的高校名:cinv;n=LocateVex(g,v);if(高校名重复)该高校已存在!i;构造新顶点向量for(i=0;i=(*g).vexnum;i+)初始化该行邻接矩阵的值初始化该列邻接矩阵的值图的顶点数加删除学校DeleteVex(graph/中顶点v及其相关的弧k=LocateVex(g,v);if(k不存在该学校!数据结构课程设计报告 第 5 页,共 页i,j;m=0;if(不是图的顶点)m=无限;j+)if(有入弧或边)修改弧数for(序号k后面的顶点向量依次前移)(*g).vexsj-1=(*g).vexsj;for(j=k+1;移动待删除顶点之
8、后的矩阵元素移动待删除顶点之下的矩阵元素更新图的顶点数修改高校名v)/修改高校名请输入要修改的高校名:if(nvexsn=s;添加路线w)/在中增添弧,若是无向的,则还增添对称弧数据结构课程设计报告 第 6 页,共 页请输入要添加的线路的两端的高校名:vv1,w1;v1=LocateVex(g,v);/尾w1=LocateVex(g,w);/头if(v10|w10|v1=w1)高校名输入错误!elseif(路线两头高校名重复)该线路已存在!弧或边数加请输入该条线路的建设费用:(*g).arcsv1w1.adj;boolbRet=cin.good();if(!bRet)输入的成本不是整型的!ex
9、it(0);(*g).arcsw1v1.adj=(*g).arcsv1w1.adj;删除线路/在中删除弧是无向的,则还删除对称弧请输入要删除的线路的两端的高校名:数据结构课程设计报告 第 7 页,共 页m=LocateVex(g,w);if(m0|niomanipwindows.hfstreamstring#defineMAX_VERTEX_NUM30INFINITY32768usingnamespacestd;数据结构课程设计报告 第 12 页,共 页LocateVex(graphv)/求顶点位置函数,若存在,输出j;若不存在,输出j=-1,k;vexnum;k+)if(g-vexsk=v)
10、/判断是否存在顶点j=k;break;*g)/采用邻接矩阵法,构造有向网gifstreaminfile(,ios:in);/从文件中读入数据infile)数据结构课程设计报告 第 13 页,共 页/从文件读入顶点数arcnum;/从文件读入边数+i)/顶点向量/初始化邻接矩阵(*g).arcsij.adj=(*g).arcsji.adj=w;/无向网vexnum=0)system(pause);数据结构课程设计报告 第 14 页,共 页if(n=0&v=g-vexsn)(*g).vexs(*g).vexnum=v;/构造新顶点向量(*g).arcs(*g).vexnumi.adj=INFINI
11、TY;/初始化该行邻接矩阵的值(*g).arcsi(*g).vexnum.adj=INFINITY;/初始化该列邻接矩阵的值(*g).vexnum+=1;数据结构课程设计报告 第 15 页,共 页0)/v的顶点m=INFINITY;if(*g).arcsjk.adj!=m)/有入弧或边/修改弧数j+)/序号后面的顶点向量依次前移(*g).arcsij-1=(*g).arcsij;/移动待删除顶点之后的矩阵元素(*g).arcsj-1i=(*g).arcsji;/移动待删除顶点之下的矩阵元素(*g).vexnum-;/更新图的顶点数数据结构课程设计报告 第 16 页,共 页arcsv1w1.adj!=INFINITY)pa
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2