关键路径问题c语言实习课程论文.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西北农林科技大学信息工程学院 C语言和数据结构实习报告 题 目: 关键路径问题 学 号 姓 名 专业班级 软件093 指导教师 实践日期 \ 目 录 一、综合训练目的与要求 3 二、综合训练任务 3 三、总体设计 3 四、详细设计说明 4 五、调试与测试 7 六、实习日志 10 七、实习总结 12 八、附录:核心代码清单 12 一、综合训练目的与要求 本综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务: 1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握; 2. 掌握C语言编程和程序调试的基本技能; 3. 利用C语言进行基本的软件设计; 4. 掌握书写程序设计说明文档的能力; 5. 提高运用C语言、数据结构解决实际问题的能力。 二、综合训练任务 基本要求: (1)对一个描述工程的AOE网,建立其存储结构;(注:数据的输入可以是键盘输入或文件输入两种方式) (2)判断该AOE网是否能够顺利进行。 (3)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。(注:结果的输出可以是屏幕输出和文件输出两种方式) 三、总体设计 主流程图 四、详细设计说明 对于问题的分析: 由于在AOE-网中有些活动可以并行进行,所以完成工程的最短时间就是从开始点到完成点的最长路径的长度,所以路径长度最长的路径叫做关键路径。 求关键路径的算法: (1)输入e条弧j,k,建立AOE-网的存储结构; (2)从源点V0出发,令Ve[0]=0,按拓扑有序求其余各定点的最早发生时间Ve[i](1=i=n-1)。如果得到的拓扑有序序列中的顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止;否则执行步骤(3)。 (3)从汇点Vn出发,令Vl[n-1]=Ve[n-1],按拓扑有序求其余各顶点的最迟发生时间Vl[i](n-2=i=2); (4)根据各顶点的Ve和Vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s).。若某条弧满足条件e(s)=l(s),则为关键活动。 如上所述,计算各顶点的Ve值是在拓扑排序的过程中进行的,需要对拓扑排序的算法作如下修改: (a)在拓扑排序之前设初值,令 Ve[i]=0(0=i=n-1); (b)在算法中增加一个计算Vj的直接后继Vk的最早发生时间的操作:若Ve[j]+dut(j,k)Ve[k],则 Ve[k]= Ve[j] +dut(j,k); (c)为了能按逆拓扑有序序列的顺序计算各顶点的Vl值,需要记下在拓扑排序的过程中求得的拓扑有序序列,这需要在拓扑排序算法中,增设一个栈以记录拓扑有序序列,则在计算机求得各顶点的Ve值以后,从栈顶至栈底便为逆拓扑有序序列。 在程序末端要对程序进行改进,使其输入具有键盘输入和文件输入两种方式,输出也具有键盘输出和文件输出两种方式。 本程序所需要的结构体及宏定义如下: #define OK 1 #define INFEASIBLE -1 #define OVERFLOW -2 #define MAX_VERTEX_NUM 20 //最大顶点个数 图的 #define STACK_INIT_ZSIZE 100 //存储空间初始分配量 栈的 #define STACKINCREMENT 10 //存储空间分配增量 栈的 typedef int Status; //类型 typedef int SElemType; typedef int VertexType; typedef int InfoType; //--------------------栈结构------------------- typedef struct { SElemType *base; //在栈构造之前和销毁之后,base的值为NULL SElemType *top; //栈顶元素 int stacksize; //当前已分配的存储空间,以元素为单位 }SqStack,*Stack; //--------------------图结构------------------- typedef struct ArcNode //表结点 { int adjvex;

文档评论(0)

哆啦 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档