数据结构关键路径实验报告文档格式.docx

上传人:b****2 文档编号:6029069 上传时间:2023-05-05 格式:DOCX 页数:16 大小:291.72KB
下载 相关 举报
数据结构关键路径实验报告文档格式.docx_第1页
第1页 / 共16页
数据结构关键路径实验报告文档格式.docx_第2页
第2页 / 共16页
数据结构关键路径实验报告文档格式.docx_第3页
第3页 / 共16页
数据结构关键路径实验报告文档格式.docx_第4页
第4页 / 共16页
数据结构关键路径实验报告文档格式.docx_第5页
第5页 / 共16页
数据结构关键路径实验报告文档格式.docx_第6页
第6页 / 共16页
数据结构关键路径实验报告文档格式.docx_第7页
第7页 / 共16页
数据结构关键路径实验报告文档格式.docx_第8页
第8页 / 共16页
数据结构关键路径实验报告文档格式.docx_第9页
第9页 / 共16页
数据结构关键路径实验报告文档格式.docx_第10页
第10页 / 共16页
数据结构关键路径实验报告文档格式.docx_第11页
第11页 / 共16页
数据结构关键路径实验报告文档格式.docx_第12页
第12页 / 共16页
数据结构关键路径实验报告文档格式.docx_第13页
第13页 / 共16页
数据结构关键路径实验报告文档格式.docx_第14页
第14页 / 共16页
数据结构关键路径实验报告文档格式.docx_第15页
第15页 / 共16页
数据结构关键路径实验报告文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构关键路径实验报告文档格式.docx

《数据结构关键路径实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构关键路径实验报告文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

数据结构关键路径实验报告文档格式.docx

五、概要设计

为了实现上述操作,抽象数据图的定义如下:

structarcnode//声明边表中结点结构

{

intadjvex;

intdut;

//边上的权值

structarcnode*nextarc;

};

structnode//声明头结点结构

intdata;

intid;

//定点入度

structarcnode*firstarc;

1、基本操作:

(1)voidcreate_ALgraph(ALgraphg,inte,intn)

建立AOE网的邻接表,e为弧的数目,n为顶点数

(2)voidoupe_ALgraph(ALgraphg,intn)

输出AOE网的邻接表

(3)intCriticalpath(ALgraphg,intn)

求AOE网的各个关键活动

2、本程序包含两个模块:

(1)主程序模块;

(2)建立AOE网的邻接表、输出AOE网的邻接表、求AOE网的各个关键活动;

(3)模块调用图:

主程序模块

建立AOE网的邻接表

输出AOE网的邻接表

求AOE网的各个关键活动

3、流程图

 

六、详细设计

1、存储类型,元素类型,结点类型:

元素类型为整形和指针型。

2、每个模块的分析:

(1)主程序模块:

main()

ALgraphg;

inte,n;

inttag;

printf("

\n请输入顶点的个数和边的个数,用空格间隔:

"

);

scanf("

%d%d"

&

n,&

e);

create_ALgraph(g,e,n);

//建立邻接表

\n输出邻接表信息:

\n"

oupe_ALgraph(g,n);

//建立输出邻接表

\n输出AOE网的关键路径:

弧:

权值\n"

tag=Criticalpath(g,n);

//找关键活动

if(!

tag)

printf("

AOE网有回路\n"

}

(2)建立AOE网的邻接表函数模块

voidcreate_ALgraph(ALgraphg,inte,intn)

{//建立AOE网的邻接表,e为弧的数目,n为顶点数

structarcnode*p;

inti,j,k,w;

printf("

请输入顶点的信息和入度,用空格间隔:

for(i=1;

i<

=n;

i++)//结点下标从1开始

{

scanf("

g[i].data,&

g[i].id);

//输入顶点信息和入度

g[i].firstarc=NULL;

}

for(k=1;

k<

=e;

k++)//建立边表

请输入边的两个顶点以及边上的权值,用空格间隔:

%d%d%d"

i,&

j,&

w);

//输入有向边的两个顶点

p=(structarcnode*)malloc(sizeof(structarcnode));

p->

adjvex=j;

dut=w;

nextarc=g[i].firstarc;

//插入下标为i的边表的第一个结点的位置

g[i].firstarc=p;

输出AOE网的邻接表函数模块

voidoupe_ALgraph(ALgraphg,intn)//输出AOE网的邻接表

inti;

n;

i++)

p=g[i].firstarc;

%d,%d->

g[i].data,g[i].id);

while(p!

=NULL)

{

%3d%3d"

p->

adjvex,p->

dut);

p=p->

nextarc;

//找下一个邻接点

}

求AOE网的各个关键活动函数模块

intCriticalpath(ALgraphg,intn)//求AOE网的各个关键活动

inti,j,k,count;

inttpord[VEX_NUM+1];

//顺序队列

intve[VEX_NUM+1],le[VEX_NUM+1];

inte[ARC_NUM+1],l[ARC_NUM+1];

intfront=0,rear=0;

//顺序队列的首尾指针初值为0

structarcnode*p;

for(i=1;

i++)//各事件最早发生事件初值为0

ve[i]=0;

if(g[i].id==0)//入度为0入队列

tpord[++rear]=i;

count=0;

while(front!

=rear)

front++;

j=tpord[front];

count++;

p=g[j].firstarc;

k=p->

adjvex;

g[k].id--;

if(ve[j]+p->

dut>

ve[k])

ve[k]=ve[j]+p->

dut;

if(g[k].id==0)

tpord[++rear]=k;

if(count<

n)//该AOE网有回路

return0;

i++)//各事件的最迟发生事件赋初值

le[i]=ve[n];

for(i=n-1;

i>

=1;

i--)//按拓扑序列的逆序取顶点

j=tpord[i];

p=g[j].firstarc;

if(le[k]-p->

dut<

le[j])

le[j]=le[k]-p->

i=0;

for(j=1;

j<

j++)

while(p!

=NULL)//计算各边<

Vj-1,Vk>

所代表的a(i+1)的e[i]和l[i]

{

k=p->

e[i]=ve[j];

l[i]=le[k]-p->

if(l[i]==e[i])//输出关键活动

printf("

<

v%d,v%d>

:

%d\n"

g[j].data,g[k].data,p->

p=p->

i++;

}

return1;

}

3)函数调用关系图

create_ALgraph(ALgraphg,inte,intn)

oupe_ALgraph(ALgraphg,intn)

Criticalpath(ALgraphg,intn)

3、完整的程序:

#include"

stdio.h"

stdlib.h"

#defineVEX_NUM10//定义最大顶点数

#defineARC_NUM20//定义最多边数

typedefintvertype;

typedefstructnodeALgraph[VEX_NUM+1];

七、程序使用说明及测试结果

1、程序使用说明

(1)本程序的运行环境为VC6.0。

(2)进入演示程序后即显示提示信息:

请输入顶点的个数和边的个数,用空格间隔:

(输入后)回车;

请输入顶点的信息和入度,用空格间隔(输入后)回车;

请输入边的两个顶点以及边上的权值,用空格间隔:

即得结果;

2、测试结果:

例如:

输入:

请输入顶点的个数和边的个数,用空格间隔:

3、调试中的错误及解决办法。

调试过程中,遇到了许多的问题,如关于图的存储结构使用邻接矩阵还是邻接表,然后是关于拓扑排序的算法的问题,通过查阅相关数据结构算法的书本解决了编程过程中遇到的问题。

运行界面

先输入911后,回车:

再输入102131415261718292后回车:

输入边的两个顶点以及边上的权值,用空格间隔:

回车即得结果:

八、实验小结:

首先通过数据结构老师在课堂上的讲解,对关键路径有了认识和了解,求关键路径的算法也了解和理解了,然后参考相关数据结构算法的书本,将求关键路径的算法运行后,遇到了一些小问题,通过查阅相关资料和向其他同学请教,解决遇到的问题,关于图的路径问题还有最短路径也是求图的路径的一种算法,感觉图的用途挺多的,能够解决实际生活中遇到的很多问题。

签名:

日期:

实验成绩:

批阅日期:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

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

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