图的关键路径算法

关键路径法(CPM)是一种项目计划管理方法,通过数学计算确定项目活动的工期和逻辑关系,以计算项目的总工期、活动的时间特点。本文将介绍CPM的概念,并提供相关的头文件(CriticalPath.h)、实现文件(CriticalPath.cpp)和测试文件(main.cpp)的内容。
摘要由CSDN通过智能技术生成
 

关键路径法(Critical Path Method, CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图。关键路径法将项目分解成为多个独立的活动并确定每个活动的工期,然后用逻辑关系(结束-开始、结束-结束、开始-开始和开始结束)将活动连接,从而能够计算项目的工期、各个活动时间特点(最早最晚时间、时差)等。

 

头文件:CriticalPath.h

#ifndef CRITICALPATH_H
#define CRITICALPATH_H
#define MAXVEX 20
typedef int VertexType;  //图的顶点数据类型
typedef struct edgenode{
	int AdjVex;   //顶点的下标值
	int weight;   //顶点的权值
	struct edgenode* next;  //指向下一个边集点
}EdgeNode;
typedef struct vertexnode{
	VertexType data; //顶点信息
	int in; //顶点的入度
	EdgeNode *FirstEdge;  //指向边集点
}VertexNode;
typedef struct graph{
	VertexNode Vertex[MAXVEX]; //图的顶点集
	int NumVertex,NumEdge; //图的顶点数和边数
}Graph;

void CreateGraph(Graph *G); //创建图
void TopoLogicalSort(Graph *G); //拓扑排序算法
void CriticalPath(Graph *G); //关键路径算法
#endif //CRITICALPATH_H


实现文件:CriticalPath.cpp

#include "CriticalPath.h"
#include <stdio.h>
#include <stdlib.h>
int *etv,*ltv; //事件最早发生时间和最迟发生时间数组
int top2; //用于Stack2的指针
int *Stack2; //用于存储拓扑序列的栈
void CreateGraph(Graph *G) //创建图
{
	EdgeNode *e = NULL;
	G->NumVertex = 10;
	G->NumEdge = 13;
	for(int i = 0;i < G->NumVertex;++i)
	{
		G->Vertex[i].data = i;
		G->Vertex[i].in = 0;
		G->V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值