数据结构-求关键路径和关键活动

#include
#define MAXSIZE 100

typedef struct ArcNode{
	int adjvex;
	int weight;
	struct ArcNode *nextarc;
}ArcNode;
typedef struct VNode{
	char vertex;
	ArcNode *firstarc;
}VNode;
typedef VNode Adjlist[MAXSIZE];
typedef struct ALGraph{
	Adjlist adjlist;
	int vexnum;
	int arcnum;
}ALGraph;

void FindInDegree(ALGraph G,int *indegree)	//查找所有顶点的入度 
{
	ArcNode *p;
	int i;
	for(i=0;iadjvex]++;
			p = p->nextarc;
		}
	}
}

void CriticalPath(ALGraph G,int n)		//G为用邻接表存储的含有n个顶点的AOE网 
{
	ArcNode *p;		//p用来表示临时结点
	int i,j,k,v,dut,indegree[n];
	int ee,el;
	int top1 = 0,top2 = 0;	//top1是正序栈指针,top2是逆序栈指针。
	int ve[n],vl[n];	//ve->顶点的最早发生时间,vl->顶点的最迟发生时间。 
	FindInDegree(G,indegree);		//查找所有顶点入度 
	for(i=0;iweight;
			j = p->adjvex;
			if(ve[v] + dut > ve[j]){
				ve[j] = ve[v] + dut;
			}
			if(--indegree[j] == 0){
				indegree[j] = top1;
				top1 = j + 1;
			}
			p = p->nextarc;
		}
	}
	for(i=0;iadjvex;
			dut = p->weight;
			if(vl[j]-dutnextarc;
		}
	}
	for(i=0;iadjvex;
			dut = p->weight;
			ee = ve[i];
			el = vl[k] = -dut;
			if(ee==el){
				printf("边v%d to v%d:权值为:%d\t",j,k,dut);
			}
			p = p->nextarc;
		}
	}
}

int main()
{
	return 0;	
} 

你可能感兴趣的:(数据结构,数据结构)