ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:213.20KB ,
资源ID:4706755      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4706755.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(管道铺设施工的最佳方案问题Word格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

管道铺设施工的最佳方案问题Word格式.docx

1、Please input the information of the vertices输入顶点信息,然后进入循环,创建各个顶点的邻接表,即根据提示信息Please input the information of edges和Please input the information of weight:依次输入各顶点与其他顶点本身以及两者之间的权值,创建图完毕。用户输入完毕后,程序自动输出运行结果。输入值必须为字母和浮点数,可以不必区分大小写。3.测试数据要求:用户输入字母时,输入大写或小写,都可以被该程序识别,正常运行。但必须根据提示信息后面给出的参考形式,有针对性地输入逗号。三概要设计为

2、了实现上述功能,该程序以邻接表来存储图,因此需要图这个抽象数据类型。1.图抽象数据类型定义:ADT ALGraph 数据对象:D=,i=1,2,3.,n,n 数据关系:R=; 基本操作:Create_ALGraph(G);/创建图 Create_WLGraph(G); /将图G中各顶点以及权值存放到新图中,权值只存放一次 select_info(W, G);/将新图W中的权值按升序排列 Create_TLGraph(w, G);/将最小生成树以顶点对 (i, j)的形式输出ADT ALGraph2.本程序保护模块:主函数模块图模块调用关系:3.主要算法流程图:Create_ALGraph( )

3、算法流程图: Create_WLGraph()算法流程图: Create_TLGraph( )算法流程图:四详细设计1.相关头文件的调用说明:#includestdlib.h#define MaxVerNum 1002.元素类型、结点类型和结点指针类型:static void forcefloat(float *p)float f = *p;forcefloat(&f);typedef struct node int adjvex; float info; struct node *next;EdgeNode;typedef struct vnode char vertex; EdgeNode

4、 *firstedge;VertexNode;typedef VertexNode AdjListMaxVerNum;struct bianint z,y;typedef structchar vMaxVerNum; struct bian eMaxVerNum;WGraph;struct visitvisitedMaxVerNum; positionMaxVerNum; vvppMaxVerNumMaxVerNum;3.邻接表类型: AdjList adjlist; int n,e; ALGraph;/部分基本操作的伪码实现Create_ALGraph(ALGraph *G)int i,j;

5、 char p,q; int k; /* int x=0; */ EdgeNode *s; char a,b; printf(n); scanf(%d,%d,&(G-n),&e); getchar(); for(i=0;iadjlisti.firstedge=NULL; /*if(G-adjlisti.vertex!= &G-n) x+;*/ for(k=0;ke);k+) printf(%c,%cp,&q); s=(EdgeNode *)malloc(sizeof(EdgeNode); s-adjvex=q-64; i=p-64;%f(s-info);next=G-adjlisti-1.fi

6、rstedge;adjlisti-1.firstedge=s; /*Please output the information:%d,%dn,G-n,G-x=%dn,x);n;%cnadjlisti.vertex); s=G-adjlisti.firstedge; while(s!=NULL)the linbian is %d,the info is %.1fn,s-adjvex,s-info); s=s-next; */int Panduan_Vertex(int k,int i,WGraph *w,EdgeNode *s)int t; for(t=0;tet).y=i+1&(w-et).z

7、=s-adjvex) return 1; return 0;void select_info(WGraph *W,ALGraph *G) int i,j,p,k; float t; p=i; for(j=i+1;jej.infoep.info) p=j; if(p!=i) t=W-ep.info; W-ep.info=W-ei.info;ei.info=t; k=W-ep.z;ep.z=W-ei.z;ei.z=k;ep.y;ep.y=W-ei.y;ei.y=k; for (i=0;%.1f ,W-ei.info);int judge_vertex(WGraph *w,int i,struct

8、visit *vp) if(vp-visitedw-ei.z-1=-1&vp-ei.y-1=-1)return 1;else if(vp-ei.y-1=1)return 2;ei.y-1=-1&ei.z-1=1)return 3;ei.z-1=1&return 4;void Create_TLGraph(WGraph *w,ALGraph *G)WGraph T; int i,j,t,h,k=2; int m=1; int abc,bcd; struct visit *vp; vp=(struct visit *)malloc(sizeof(struct visit); vp-visitedi

9、=-1; vp-positioni=-1;vvppi0=i+1; for(j=1;vvppij=0; T.v0=w-vw-e0.z-1; T.v1=w-e0.y-1;e0.z-1=1;positionw-e0.z-1=w-e0.z; for(j=0; if(vp-vvppw-e0.z-1j=0)e0.z-1j=w-e0.y; break;e0.y-1=1;e0.y-1=w- T.e0.info=w-e0.info; T.e0.z=w- T.e0.y=w- for(i=1; t=judge_vertex(w,i,vp); if(t=4) if(vp-ei.z-1=vp-ei.y-1) conti

10、nue; else abc=0; bcd=0; for(j=0; if(vp-vvppvp-ei.y-1-1j!=0) abc+; for(j=0; if(vp-ei.z-1-1j! bcd+; for(j=bcd,h=0;n&hvvpp(vp-ei.z-1)-1j=vp-ei.y-1)-1h;ei.y-1-1h=0; for(h=bcd;abc+bcd;h+) vp-position(vp-ei.z-1-1h)-1=vp-ei.z-1; T.em.info=w- T.em.z=w- T.em.y=w- m+; else if(t=1) vp-ei.z-1=1;ei.y-1=1; T.vk+=

11、w-ei.y-1; T.em.info=w-ei.z-1=w-ei.y-1=w-ei.z-11=w-ei.y-10=0; else if(t=2)ei.z-1=vp-ei.y-1-1j=0)ei.y-1-1j=w-ei.z-10=0; else if(t=3)ei.y-1=vp-ei.z-1-1j=0)ei.z-1-1j=w-printf(for(i=0;n)-1;(%c,%c)n,T.ei.z+64,T.ei.y+64);void Create_WLGraph(ALGraph *G)int i,j,t,m,k=0; EdgeNode *s,*p; WGraph *W; W=(WGraph *

12、)malloc(sizeof(WGraph);v0=G-adjlist0.vertex;adjlist0.firstedge; W-ek.z=1;ek.y=s-adjvex;ek.info=s-info; k+;vi=G-adjlisti.vertex; m=Panduan_Vertex(k,i,W,s); if(m=1) s=s- else W-ek.z=i+1;vi);e;%d,%d,%.1fnei.z,W-ei.y,W- select_info(W,G); Create_TLGraph(W,G);4.主函数的伪码:main()ALGraph *G; G=(ALGraph *)malloc

13、(sizeof(ALGraph); Create_ALGraph(G); Create_WLGraph(G);5.函数调用关系:五调试分析1.出现问题及解决方法:在刚开始写程序时,由于考虑不全面,在去除连通图闭合回路的算法中遇到很大困难,后来采用以下方法解决了这个问题:将每个顶点分别放在一个结构体中,结构体中的数组visitedi记录顶点Vi是否被访问过的情况,positioni记录顶点Vi的具体位置,二维数组vvppij记录已经将以该顶点为左顶点或右顶点的权值存入T中后,该权值的右顶点或左顶点的编号。其具体思想是:只要将一个权值存入T中,就将相应的左右顶点放到同一个二维数组中,之后每欲将一个

14、权值加入T中,先检验该权值的两顶点是否在同一个二维数组中。若不在,则将该权值存入T中;若在,将该权值舍去(因为再将该权值加入T中,就会出现回路)。2.方法优缺点分析:优点:思想比较简单,容易令人理解;在写核心算法时,先将字母顶点用相应的数字代替,所以在将数字转化成字母回去时,利用数字与ASCII码值的固定差值,可以保证用户在输入时的大小写字母都可以被该程序识别。缺点:由于采用数字来代替字母,中间的转换关系比较复杂,尤其是将对应关系理清需要足够的耐心和细心。3主要算法的时间和空间复杂度分析:(1)由于Create_ALGraph( )算法中将读入顶点的操作执行了n次,读入边的操作执行了2m次,故

15、其时间复杂度为O(n+2m);(2)由于Create_WLGraph( )算法将读入权值及其左右顶点的操作执行了n次,故其时间复杂度为O(n);(3)由于Create_TLGraph( )算法中根据判断是否构成回路来取舍边,因为有n条边,故要执行n次,所以时间复杂度是O(n);(4)由于select_info( )函数采用简单选择法排序,时间复杂度是O();(5)所有算法的空间复杂度都是O(1)。六使用说明程序运行后,用户根据提示输入顶点数,边数,顶点信息,边的信息,权值,输入完毕后程序会自动以顶点对(i, j)的形式输出最小生成树的边。七调试结果输入数据:“9”,“15”,“ABCDEFGH

16、I”,“A,B”,“32.8”,“A,C”,“44.6”,“A,H”,“12.1”,“A,I”,“18.2”,“B,A”,“32.8”,“B,C”,“5.9”,“C,A”,“44.6”,“C,B”,“5.9”,“C,D”,“21.3”,“C,E”,“41.1”,“C,G”,“56.4”,“D,C”,“21.3”,“D,E”,“67.3”,“D,F”,“98.7”,“E,C”,“41.1”,“E,D”,“67.3”,“E,F”,“85.6”,“E,G”,“10.5”,“F,D”,“98.7”,“F,E”,“85.6”,“F,I”,“79.2”,“G,C”,“56.4”,“G,E”,“10.5”,

17、“G,H”,“52.5”,“H,A”,“12.1”,“H,G”,“52.5”,“H,I”,“8.7”,“I,A”,“18.2”,“I,F”,“79.2”,“I,H”,“8.7”。(双引号不需输入)输出数据:(B,C),(H,I),(E,G),(A,H),(C,D),(A,B),(C,E),(F,I) 运行结果截屏:八附录源程序清单: /*调用的头文件库说明*/ /*由于我的TC中不支持浮点数,故添加了这个程序段*/typedef struct node /*构造邻接表的结构体*/ /*存放权值*/ /*指向下一个邻接点的指针域*/typedef struct vnode /*构造顶点表的结构体*/ /*顶点域*/ /*边表头指针*/typedef struct /*构造图的结构体*/ /*邻接表*/ /*顶点数和边数*/struct bian /*存放权值及其左右顶点的结构体*/typedef struct /*用该结构体来只存放一次权值及其相应的顶点*/char vMaxVerNu

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2