t;?ode*firstarc;}VNode;typedefstructGraph{?VNodeadjlist[MAXN];?intn,e;?}Graph;2.3 各功能模块voidInit(Graph*&g)g表示有向图,这个函数的作用是初始化有向图g,使有向图顶点数和边数为0,并将邻接表的指针置空。intFind(Graph*g,Vertexv)在有向图中找出顶点为v在邻接表的下标。boolEmpty(Graph*g)判断有向图是否为空。voidCreate(Graph*&g)根据提示信息输入相应的信息,并建立有向图。voidOutput(Graph*g)输出有向图的邻接表的形式voidDu(Graph*g)求图中各个顶点的出度voidRdu(Graph*g,intf)求图中各个顶点的入度boolTopsort(Graph*g,int&u,int&v)进行拓扑排序求出事件的最早发生时间和最晚发生时间,并确定是否是关键路径。voidPath(Graph*g,intu,intv,intpath[],intd)输出关键路径voidPrint(Graph*g)输出有向图的顶点和边。voidCriticPath(Graph*g)输出有向图的关键路径voidMenu()菜单函数3 详细设计 3.ode{?intadjvex;?ode*nextarc;?InfroTypeInfro;/*边的权值*/?boolflag;}ode;顶点的结构体的定义typedefstructVNode{?Vertexdata;?intcount;/*结点的入度*/?ode*firstarc;}VNode;图的结构体定义typedefstructGraph{?VNodeadjlist[MAXN];?intn,e;?}Graph;3.2初始化voidInit(Graph*&g){?inti;?g->n=0;