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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4942741.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C--实现关键路径算法课程设计报告.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C--实现关键路径算法课程设计报告.doc

1、 有向图的关键路径 计算机与软件工程学院 课程设计说明书 课 程 名 称: 数据结构与算法课程设计 课 程 代 码: 题 目: 年级/专业/班: 学 生 姓 名: 学   号: 开 始 时 间: 2016 年 5 月 8 日 完 成 时 间: 2016

2、年 5 月 18 日 课程设计成绩: 学习态度及平时成绩(20) 技术水平与实际能力(20) 完成情况(20) 创新(5) 说明书(计算书、图纸、分析报告)撰写质量(35) 总 分(100) 指导教师签名: 年 月 日 目 录 引 言 1 1需求分析 1 1.1任务与分析 1 1.2测试数据 1 2 概要设计 3 2.1设计思路 3 2.2层次图 3 3 详细设计 4 3.1主函数的实现 4 3.2数据录入实现 5 3.3输出图的各顶点和弧的实现 6 3.4计算各

3、顶点的入度 7 3.5输出关键路径 7 4调试分析 8 5用户使用说明 9 6测试结果 9 6.1录入数据 9 6.2功能实现 9 6.3测试结论 11 致 谢 13 参考文献 14 摘 要 具有最大路径长度的路径称关键路径,关键路径上的活动称关键活动。课程设计主要要求求有向图的关键路径。用领接表存储结构储存有向图。用深度遍历的方式输出有向图的顶点和弧。程序实现了存储有向图,输出有向图的各顶点和弧,计算顶点的入度和求有向图的关键路径这四个功能。用领接表存储结构储存有向图,用深度遍历的方式输出有向图的顶点和弧,用遍历查找的

4、方式计算顶点的入度。求关键路径时先用拓扑排序函数判断有向图是否有回路,调用求关键活动的函数找到关键路径,最后输出。 关键词:领接表;入度;AOE网;关键路径; 引 言 工程有很多的阶段,这些阶段之间有一定的先后关系和自己的时间。我们可以用图来表示工程,将其输入程序中,可以用程序计算出工程的相关信息,如,工程完成的最短时间,哪些活动会影响工程的进度等。要解决这些问题就可以用领接表储存图,并计算各个事件和各个阶段的最早发生时间和最晚发生时间,得到关键活动,从而的到关键路径。 1需求分析 从键盘上输入图的各顶点和弧上的权值,用领接表储存。在屏幕上输出图的顶

5、点和弧。计算输出顶点的入度。如果图是AOE网,输出关键路径。 1.1任务与分析 1、 首先定义边节点和顶点的结构体,将输入的数据用链接表储存起来,领接表即是顺序+链式的存储方式。将顶点顺序储存,将该顶点为起点的弧指向的另一顶点及其相关信息存储在链表中。 2、 采用深度遍历的方式,输出顶点和弧。 3、 判断顶点是否在弧尾,在弧尾就在入度的计数变量上加一。 4、 首先要将图进行拓扑排序,看是否有回路,没有回路才能求关键路径。求AOE网的关键路径要先求到各个事件的最早发生时间和最迟发生时间,再求有向边的最早和最迟发生时间,活动的最晚发生时间和最早发生时间相减等于0时,该活动即为关键活动,

6、再将关键活动按顺序连起来极为关键路径。 1.2测试数据 带权有向图测试数据如下: 测试数据1如图1-1: 图1-1测试图1 测试数据2如图1-2: 图1-2 测试图2 测试数据3如图1-3: 图1-2 测试图3 2 概要设计 2.1设计思路 程序分总的来说分为四大功能模块:输入储存;输出顶点和弧;输出各顶点的入度;输出关键路径。在输出关键路径的模块中包括:拓扑排序判断是否有回路;计算各事件的最早发生时间和最晚发生时间;求活动的最晚发生时间,判断该活动是否是关键活动;输出关键路径。 首先调用输入存储模块创建图,用菜单工作的方式来实现对各个输出功

7、能模块的调用。 输入储存:ALGraph::ALGraph(T a[ ], int n, int e) 输出顶点和弧:void Print(); 输出各顶点的入度:void indegree(); 输出关键路径:void critical_path(ALGraph G); 输出关键路径模块中的子模块: 拓扑排序:void TopSort(ALGraph G); 事件的时间:void vv(ALGrapph G); 判断是否是关键活动:void keyEvent(ALGraph G); 2.2层次图 各模块间的层次如图2-1: 图2-1 各模块间的层次图

8、3 详细设计 3.1主函数的实现 首先输入图的顶点的个数和边的个数,程序通过输入的数来判断要创建的图的大小,调用图的构造函数,输入图的相关信息。之后,为了方便用户操作,用工作菜单的方式来实现对各个功能的调用。 void main() { int n,e; int choose=1;//控制 int which;//功能选择变量 string *vname;//[MaxSize]; cout<<"请输入图的顶点数:"; cin>>n; while(n<0||n>20) { cout<<"顶点个数应在-20之间!请重新输入

9、"<>n; } cout<<"请输入图的边数:"; cin>>e; while(e<0) { cout<<"您输入的顶点个数小于零!请重新输入!"<>e; } vname=new string[n]; cout<<"请输入顶点:"; for(int j=0;j>vname[j]; } ALGraph g(vname, n, e); while(choose==1) { cout<<"-------------------

10、"<

11、"<>which; switch(which) { case 1:g.Print(); break; case 2:g.indegree(); break; case 3:g.critical_path(); break; case 4: choose=0; break; } } } 3.2数据录入实现 定义边表节点和顶点表节点。 struct ArcNode { int adjve

12、x,weight; ArcNode *next; }; template struct VertexNode { T vertex; int in; ArcNode *firstedge; }; 用构造函数实现数据的录入,录入时根据程序的提示录入数据。 ALGraph::ALGraph(T a[ ], int n, int e) { vertexNum=n; arcNum=e; int i,j,k,w; for (i=0; i

13、a[i]; adjlist[i].firstedge=NULL; } for (k=0; k"; cin>>i>>j>>w; ArcNode *s; s=new ArcNode; s->adjvex=j; s->weight=w; s->next=adjlist[i].firstedge; adjlist[i].firstedge=s; } } 3.3输出图的各顶点和弧的实现 对图进行深

14、度遍历,输出顶点和弧。 void ALGraph::Print() //输出有向图的个顶点和弧 { for(int i=0;i"; int j; j=p->adjvex; cout<weight<next; }

15、 } } 3.4计算各顶点的入度 用双重循环,外层循环找到各个顶点,内层循环计算有几条弧指向外层循环中的顶点,用累加器累加,最后累加器得到的数就是该顶点的入度。 void ALGraph::indegree() //输出每个顶点的入度 { ArcNode *p; int count; for(int i=0;i

16、 while(p) { if(p->adjvex==i) count++; p=p->next; } } else continue; } adjlist[i].in=count; cout<

17、径串起来输出。 void ALGraph::critical_path() { int ts[MaxSize],ve[MaxSize],vl[MaxSize]; if(TopSort(ts)==0) { cout<<"有关键路径!"<

18、k) { v=ev[i].v2; cout<<"->"<

19、问题2:在运行求事件的最早发生时间和最迟发生时间的函数时,发生读写位置冲突的问题。 分析及解决方法:经检查后发现是传入的用来储存事件最早发生时间和最迟发生时间的数组ve和vl没有进行初始化。用for循环语句对两个数组进行初始化。 问题3:当调用求关键路径的方法时程序运行到一半时不再运行。 分析及解决方法:经调试后发现是求顶点的最早发生时间和最迟发生时间 的vv函数的while循环中少写了P=P->next语句导致出现了死循环。在while循环中加上P=P->next语句。 5用户使用说明 按照提示输入数据后,在菜单出现后,从键盘输入功能的编号就可以实现不同的功能。简单,方便,易操作

20、 6测试结果  用测试数据1进行测试。 6.1录入数据 从键盘上输入顶点的个数,边的条数,再根据提示输入顶点、边、权值,用领接表来进行储存。如图6-1所示: 图6-1 录入存储 6.2功能实现 根据菜单选择功能。 测试输出各顶点和弧的功能,结果如图6-2所示。 图6-2 输出顶点和弧 测试计算各顶点的入度功能,结果如图6-3所示。 图6-3 计算各顶点的入度 测试计算AOE网的关键路径的功能,结果如图6-4所示。 图6-4 计算AOE网的关键路径 6.3测试结论 通过测试得知该程序实现了需求中的所有功能。测试的结果完全符合预期结果。

21、 结 论 通过这次实训,使我学到了很多。由于求关键路径的算法在上课时没有深入学习,课后没有重视关键路径这块基本上没有理解,我在编程中遇到了很多困难,但在攻克困难的过程中提高了自己的自学能力,分析问题及解决问题的能力、熟练运用理论知识的能力。同时,让我更深入的掌握了有关求AOE网关键路径等方面的知识,巩固了所学内容。我从这次课程设计中所得的另外一个很大的收获是:不能因为问题难就逃避它,只有勇于尝试才可能解决根本问题。数据结构这门课程对我们学习好这个专业很重要,在以后,我会尽量利用我的空闲时间把以前不熟的和掌握不牢固的知识点再学习一遍。 尽管这次的实习是独立的个人

22、工作,但在完成课程设计遇到困难时,也得到了很多老师的指导和同学的帮助。然我明白了合作的重要性。在实训过程中收获了很多的丰富的经验知识,更加深了我对一些算法和新知识的理解与应用,让我受益匪浅。 在实训中认识自己不足的地方。自己了解一些算法,但是在具体编程的时候不会应用。写的程序复杂度高,效率低下。因此,在以后的学习中我会更加注重学以致用。 致 谢 感谢有这次实训的机会。通过这次实训,我学到了很多,认识到了自己的不足。感谢老师的耐心的指导。感谢同学的热心帮助。

23、 参考文献 [1] 严蔚敏,吴伟民.数据结构.清华大学出版社出版。 [2] 严蔚敏,吴伟民. 数据结构题集(C语言版) .清华大学出版社.2003年5月。 [3]唐策善,李龙澎.数据结构(作C语言描述) .高等教育出版社.2001年9月 [4] 朱战立.数据结构(C++语言描述)(第二版本).高等出版社出版.2004年4月。 [5]胡学钢.数据结构(C语言版) .高等教育出版社.2004年8月。 [6]陈明编著.数据结构.北京:清华大学出版社,2005年。 [7]王红梅,胡明,王涛编著(C++版)(第2版).清华大学出版社.2011年6月 14

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服