第6次图的应用实验实验题目与报告书文档格式.docx
- 文档编号:13767012
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:9
- 大小:52.43KB
第6次图的应用实验实验题目与报告书文档格式.docx
《第6次图的应用实验实验题目与报告书文档格式.docx》由会员分享,可在线阅读,更多相关《第6次图的应用实验实验题目与报告书文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
1)掌握AOE网的邻接表存储结构表示及创建算法的c语言实现;
2)理解AOE网的拓扑排序算法(算法7.12)的实现原理及应用;
3)掌握AOE网关键路径的计算算法(算法7.13,7.14)及C语言实现与应用;
4)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果);
5)认真书写实验报告,并按时提交。
2实验内容或题目
题目:
图的应用实验——计算AOE网的关键路径
内容:
按照图的“邻接表”存储结构表示AOE网,实现求其关键路径的算法,并验证如下图1所示AOE网的关键路径。
3实验步骤与源程序
#defineINFINITY32768
#defineTrue1
#defineFalse0
#defineError-1
#defineNULL0
#defineOk1
#defineMAX_VERTEX_NUM9
typedefenum{DG,DN,UDG,UDN}GraphKind;
typedefintVertexData;
typedefstructARCNNODE
{
intadjvex;
intweight;
structARCNNODE*nextarc;
typedefstructVERTEXNODE
VertexDatadata;
ArcNode*firstarc;
}VertexNode;
typedefstruct
VertexNodevertex[MAX_VERTEX_NUM];
intvexnum,arcnum;
GraphKindkind;
}AdjList;
#include"
AdjList.h"
STACK.h"
#include<
stdio.h>
int
ve[MAX_VERTEX_NUM];
intVN[9]={3,1,1,1,2,1,1,1,0};
intAN[11][2]={1,6,
2,4,
3,5,
4,1,
5,2,
6,9,
7,7,
7,4,
8,2,
8,4};
CreateAdjList(AdjList*G)
inti,j;
intarc=0;
ArcNode*arcn,*pre;
G->
vexnum=9;
for(i=0;
i<
vexnum;
i++)
vertex[i].data=i;
vertex[i].firstarc=NULL;
if(VN[i]>
0)
arcn=(ArcNode*)malloc(sizeof(ArcNode));
arcn->
nextarc=NULL;
adjvex=AN[arc][0];
weight=AN[arc][1];
vertex[i].firstarc=arcn;
pre=arcn;
arc++;
for(j=1;
j<
VN[i];
j++)
{
pre->
nextarc=arcn;
}
printAdjList(AdjList*G)
ArcNode*arcn;
printf("
vexnumis%d:
"
G->
vexnum);
vertex[%d]'
sdatais:
%d\n"
i,G->
vertex[i].data);
arcn=G->
vertex[i].firstarc;
while(arcn!
=NULL)
%d->
%d,weight:
%d
i,arcn->
adjvex,arcn->
weight);
arcn=arcn->
nextarc;
\n"
);
voidFindID(AdjListG,intindegree[MAX_VERTEX_NUM])
inti;
ArcNode*p;
for(i=0;
G.vexnum;
indegree[i]=0;
p=G.vertex[i].firstarc;
while(p!
indegree[p->
adjvex]++;
p=p->
}/*for*/
intTopoOrder(AdjListG,Stack*T)
intcount,i,j,k;
intindegree[MAX_VERTEX_NUM];
StackS;
InitStack(T);
InitStack(&
S);
FindID(G,indegree);
if(indegree[i]==0)
Push(&
S,i);
count=0;
ve[i]=0;
while(!
IsEmpty(&
S))
Pop(&
S,&
j);
Push(T,j);
count++;
p=G.vertex[j].firstarc;
k=p->
adjvex;
if(--indegree[k]==0)
S,k);
if(ve[j]+p->
weight>
ve[k])
ve[k]=ve[j]+p->
weight;
if(count<
G.vexnum)
return(Error);
else
return(Ok);
intCriticalPath(AdjListG)
ArcNode
*p;
inti,j,k,dut,ei,li;
chartag;
intvl[MAX_VERTEX_NUM];
StackT;
if(!
TopoOrder(G,&
T))
vl[i]=ve[G.vexnum-1];
{
T,&
dut=p->
if(vl[k]-dut<
vl[j])
vl[j]=vl[k]-dut;
for(j=0;
j++)
ei=ve[j];
li=vl[k]-dut;
tag=(ei==li)?
'
*'
:
'
;
%d,%d,%d,%d,%d,%c\n"
G.vertex[j].data,G.vertex[k].data,dut,ei,li,tag);
p=p->
}
}
return(Ok);
intmain()
AdjListG;
CreateAdjList(&
G);
printAdjList(&
CriticalPath(G);
return0;
malloc.h>
#defineOVERFLOW-1
#defineOK0
#defineERROR1
#defineTRUE1
#defineFALSE0
#defineSTACK_INIT_SIZE1000
#defineSTACKINCREMENT10
typedef
intSElemtype;
typedefintStatus;
typedefstructSTACK
SElemType*base;
SElemType*top;
intstacksize;
}Stack;
typedefstructSTACKSqStack;
typedefstructSTACK*pSqStack;
StatusInitStack(SqStack
*S);
StatusDestroyStack(SqStack*S);
StatusClearStack(SqStack*S);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 实验 题目 报告书
![提示](https://static.bdocx.com/images/bang_tan.gif)