问答题

简答题

已知有向图的邻接表和邻接矩阵定义如下:
﹟define  MaxNum  50      ∥图的最大顶点数
typedef  struct  node {
      int  adjvex;      ∥邻接点域
       struct  node  *next;         ∥链指针域
}   EdgeNode;      ∥边表结点结构
typedef   struct{
    char  vertex;      ∥顶点域
    EdgeNode  *firstedge;      ∥边表头指针
}   VertexNode;      ∥顶点表结点结构
typedef   struct {
    VertexNode   adjlist [MaxNum];               ∥邻接表
    int  n,e;         ∥图中当前顶点数和边数
}  ALGraph;      ∥邻接表描述的图
typedef  struct{
   char   vertex[MaxNum];         ∥顶点表
   int   adjmatrix [MaxNum][MaxNum];      ∥邻接矩阵
   int   n,e;      ∥图中当前顶点数和边数
} AMGraph;      ∥邻接矩阵描述的图
下列算法是将邻接表描述的图G1改为邻接矩阵描述的图G2,在空白处填上适当内容使算法完整:
void   f33(ALGraph G1,AMGraph *G2)
{   int    i,   j;
    EdgeNode   *p;
    G2->n=G1.n;
    G2->e=     (1)     ;
    for   (i=0;  i<G1.n;  i++)
    {    G2->vertex[i]=      (2)     ;
         p=G1.adjlist[i].firstedge;
         for   (j=0;   j<G1.n;  j++) G2->adjmatrix[i][j]=0;
         while   (p)
         {    G2->adjmatrix[i][p->adjvex]=1;
                   (3)     ;
          }
    }
}

【参考答案】

(1)G1.e
(2)G1.adjlist[i].vertex
(3)p->next