3.
试题五(15分,每空3分)阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。[说明]函数intToplogical(LinkedWDigraphG)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中图G表示一个具有n个顶点的AOE-网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下:typedefstructGnode{/*邻接表的表结点类型*/intadjvex;/*邻接顶点编号*/intweight;/*弧上的权值*/structGnode*nextarc;/*指示下一个弧的结点*/}Gnode;typedefstructAdjlist{/*邻接表的头结点类型*/charvdata;/*顶点的数据信息*/structGnode*Firstadj;/*指向邻接表的第一个表结点*/}Adjulist;typedefstructLinkedWDigraph{/*图的类型*/intn,e;/*图中顶点个数和边数*/structAdjlist*head;/*指向图中第一个顶点的邻接表的头结点*/}LinkedWDigraph;例如,某AOE-网如图5-1所示,其邻接表存储结构如图5-2所示。[函数]intToplogical(LinkedWDigraphG){Gnode*p;intj,w,top=0;int*Stack,*ve,*indegree;ve=(int*)malloc((G.n+1)*sizeof(int));indegree=(int*)malloc((G.n+1)*sizeof(int));/*存储网中各顶点的入度*/Stack=(int*)malloc((G.n+1)*sizeof(int));/*存储入度为0的顶点的编号*/if(!ve||!indegree||!Stack)exit(0);for(j=1;jnextarc;}/*while*/}/*for*/for(j=1;j0){w=(2);printf(“%c“,G.head[w].vdata);p=G.head[w].Firstadj;while(p){(3)if(!indegree[p->adjvex])Stack[++top]=p->adjvex;if((4))ve[p->adjvex]=ve[w]+p->weight;p=p->nextarc;}/*while*/}/*while*/return(5);}/*Toplogical*/[15分]
A(1);p=p->nextarc;}/*while*/}/*for*/for(j=1;j0){w=
B(2);printf(“%c“,G.head[w].vdata);p=G.head[w].Firstadj;while(p){(3)if(!indegree[p->adjvex])Stack[++top]=p->adjvex;if((4))ve[p->adjvex]=ve[w]+p->weight;p=p->nextarc;}/*while*/}/*while*/return(5);}/*Toplogical*/[15分]