网站大量收购独家精品文档,联系QQ:2885784924

数据结构_关键路径实验报告.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构_关键路径实验报告

一、实验目的 1、巩固和加深对数据结构课程基本知识的理解,综合数据结构课程里学的理论知识,完成对关键路径程序的设计。 2、理解和掌握图的各种基本数据结构的定义、存储结构和相应的算法,并能够用c语言实现。 3、理解AOE网和拓扑排序、求关键路径的算法。 二、实验内容 对于给定的一个工程施工图,该图以边为单位从键盘输入,编写能够找出该图的关键路径的程序。 四、需求分析1、输入的形式和输入值的范围2、输出的形式3、程序所能达到的功能 4、测试数据: 输入顶点的个数和边的个数:9 11 输出的关键路径为:1-2-5-7-9和1-2-5-8-9 五、概要设计 为了实现上述操作,{ int adjvex; int dut; //边上的权值 struct arcnode *nextarc; }; struct node //声明头结点结构 { int data; int id; //定点入度 struct arcnode *firstarc; }; 1、基本操作:void create_ALgraph(ALgraph g,int e,int n) 建立AOE网的邻接表,e为弧的数目,n为顶点数 (2)void oupe_ALgraph(ALgraph g,int n) 输出AOE网的邻接表 (3)int Criticalpath(ALgraph g,int n) 求AOE网的各个关键活动 2、本程序包含个模块: (1)主程序模块; (2)()模块调用图: 主程序模块 3、流程图 六、详细设计 1元素类型,结点类型:{ int adjvex; int dut; //边上的权值 struct arcnode *nextarc; }; struct node //声明头结点结构 { int data; int id; //定点入度 struct arcnode *firstarc; }; 元素类型为整形和指针型。 2、每个模块的分析: (1)主程序模块:main() { ALgraph g; int e,n; int tag; printf(\n请输入顶点的个数和边的个数,用空格间隔:); scanf(%d%d,n,e); create_ALgraph(g,e,n); //建立邻接表 printf(\n输出邻接表信息:\n); oupe_ALgraph(g,n); //建立输出邻接表 printf(\n输出AOE网的关键路径:\n); printf(弧:权值\n); tag=Criticalpath(g,n); //找关键活动 if(!tag) printf(AOE网有回路\n); } (2)建立AOE网的邻接表函数模块 void create_ALgraph(ALgraph g,int e,int n) { //建立AOE网的邻接表,e为弧的数目,n为顶点数 struct arcnode *p; int i,j,k,w; printf(请输入顶点的信息和入度,用空格间隔:); for(i=1;i=n;i++) //结点下标从1开始 { scanf(%d%d,g[i].data,g[i].id); //输入顶点信息和入度 g[i].firstarc=NULL; } for(k=1;k=e;k++) //建立边表 { printf(请输入边的两个顶点以及边上的权值,用空格间隔:); scanf(%d%d%d,i,j,w); //输入有向边的两个顶点 p=(struct arcnode *)malloc(sizeof(struct arcnode)); p-adjvex=j; p-dut=w; p-nextarc=g[i].firstarc; //插入下标为i的边表的第一个结点的位置 g[i].firstarc=p; } } 输出AOE网的邻接表函数模块 void oupe_ALgraph(ALgraph g,int n) //输出AOE网的邻接表 { int i; struct arcnode *p; for(i=1;in;i++) { p=g[i].firstarc; printf(%d,%d-,g[i].data,g[i].id); while(p!=NULL) { printf(%3d%3d,p-adjvex,p-dut); p=p-n

文档评论(0)

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

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

1亿VIP精品文档

相关文档