数学与计算机学院
课程设计说明书
课 程 名 称:
数据结构课程设计
课 程 代 码:
题
目:
有向图的关键路径
年级/专业/班:
学 生 姓 名:
学
号:
开 始 时 间:
完 成 时 间:
课程设计成绩:
年
年
月
月
日
日
学习态度及平
技术水平与实
时成绩(30)
际能力(20)
创新(5)
说明书(计算书、图纸、
总 分
分析报告)撰写质量(45)
(100)
指导教师签名:
年 月 日
目 录
引言……………………………………………………………………………1
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
1 需求分析……………………………………………………………………
2 概要设计……………………………………………………………………
3 详细设计……………………………………………………………………
4 调试分析……………………………………………………………………
5 用户使用说明………………………………………………………………
6 测试结果……………………………………………………………………
7 结论………………………………………………………………………
致谢……………………………………………………………………………
参考文献………………………………………………………………………
摘 要
随着计算机的普及,计算机在各行各业中的应用中越来越广泛,在实际工程
中也会用到,有时候会根据实际情况要求缩短工期,这时我们就要清楚那些是影
3
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
响工程进度的非常关键的环节,于是就可以利用 AOE 网,计算完成整个工程预计
需要多少时间,并找出影响工程进度的“关键活动”,从而为决策者提供修改各
活动的预计进度的依据。
关键词:有向图 关键路径 拓扑排序
引 言
1 需求分析
1.1 任务与分析
4
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
一、设计题目
有向图的关键路径
二、 主要内容
从键盘上输入带权有向图的各顶点和弧上的权值,要求完成下列运算:
1)以邻接表存储该有向图;
2)输出该有向图的各顶点和弧;
3)计算各顶点的入度;
4)如果该有向图的弧表示活动,权表示活动持续的时间(活动和时间用户自行定义),
请编程计算出该 AOE 网的关键路径。
1.2 测试数据
第一组:
6 6
1 2 3 4 5 6
1 3 1
2 3 2
3 4 3
3 5 4
4 6 5
5 6 6
第二组:
9 11
a b c d e f g h i
a b 6
a c 4
a d 5
5
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
b e 1
c e 1
d h 2
e f 9
e g 7
h i 4
g i 4
f i 2
第三组:
7 10
v1 v2 v3 v4 v5 v6 v7
v1 v2 3
v1 v4 6
v1 v3 2
v2 v5 4
v4 v5 1
v2 v4 2
v3 v4 1
v3 v6 3
v6 v7 4
v5 v7 3
第四组:
6
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
6
6
v1 v2 v3 v4 v5 v6
v1 v3 1
v2 v3 2
v4 v3 3
v3 v5 4
v5 v4 5
v5 v6 6
第五组:
1
3 1
v1 v2 v3
v1 v2 1
2 概要设计
2.1 ADT 描述
ADT Graph{
数据对象 v:v 是具有相同特性额数据元素的集合,称为顶点集。
数据关系:R={VR}
VR={|v,e 属于 v,表示 v 到 w 的弧,谓词 p(v,w)定义了弧
的意义或信息}
基本操作:
Init(&g):初始化有向图
初始条件:g->n 是有 向图的顶点个数, g->e 是有向图的边数,
g->adjlist 是存放有向图的顶点和邻接点的指针的数组。
操作结果:g->n,g->e 赋值为零,数组中的每一行的指针域都赋值为
7
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
空。
Creat(&g):根据输入信息创建有向图
初始条件:g 是初始化后的图。
操作结果:根据输入的信息建立起邻接表存储的有向图。
Empty(g):判断 g 是否为有向图。
操作结果:如果有向图为空,则返回 true,否则返回 false。
Output(g):按照邻接表的形式输出有向图
初始条件:有向图 g 存在且不为空
操作结果: 按照邻接表的形式输出有向图。
Du(g):求有向图中每个顶点的出度。
初始条件:有向图 g 存在且不为空。
操作结果:求出每个顶点的出度,并输出。
Rdu(g):有向图中每个顶点的出度。
初始条件:有向图 g 存在且不为空
结束条件:求出有向图的中每个顶点的入度。
Topsort(g, u, v):进行拓扑排序求出事件的最早发生时间和最晚发生
时间,并确定是否是关键路径。
初始条件:有向图存在并且不为空。
结束条件:求出每个事件的最早发生时间和最晚发生时间,并确定是
否是关键路径上的时间。
Path(g,u,v,path,d):遍历关键路径并输出。
初始条件:经过拓扑排序之后,关键路径已经。
结束条件:输出关键路径。
CriticPath(g):输出有向图的关键路径
初始条件:拓扑排序成功。
结束条件:输出有向图的所有关键路径,和总工期。
}
2.2 程序模块结构
8
xxxx(X 代表你的课程设计题目名称,宋体,5 号字)
主函数
新
建
有
向
图
输
出
邻
接
表
顶
点
的
出
度
顶
点
的
入
度
输
出
关
键
路
2.2.1 结构体定义
typedef struct ArcNode
{
int adjvex;
struct ArcNode * nextarc;
InfroType Infro;
bool flag;
}ArcNode;
typedef struct VNode
{
Vertex data;
int count;
ArcNode *firstarc;
}VNode;
typedef struct Graph
{
VNode adjlist[MAXN];
9