问答题
已知有向图的邻接表和邻接矩阵定义如下:
﹟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