从图的邻接表表示转换成邻接矩阵表示
typedef struct ArcNode
{
int adjvex;
struct ArcNode *next;
int weight;
} ArcNode;
typedef struct
{
VertexType data;
ArcNode *firstarc;
} VNode,AdList[MAXSIZE];
typedef struct
{
int vexnum;
int arcnum;
AdList vertices;
} ALGraph;
typedef struct
{
int vexnum;
int arcnum;
VertexType[MAXSIZE];
int AdjMatrix[MAXSIZE][MAXSIZE];
} MGraph;
MGraph *AdList_to_AdMatrix(ALGraph G)
{
MGraph *GL = (MGraph*)malloc(sizeof(MGraph));
GL->vexnum = G.vexnum;
GL->arcnum = G.arcnum;
for(int i = 0; i < G.vexnum ; i++ )
{
GL->VertexType[i] = G.vertices[i].data;
}
for(int j = 0; j < G.vexnum; j++ )
{
for(int k = 0; k < G.vexnum; k++ )
{
if(j == k)
{
GL->AdjMatrix[j][k] = 0;
}
else
{
GL->AdjMatrix[j][k] = INFINITY;
}
}
}
for(int j = 0; j < G.vexnum; j++ )
{
ArcNode *p = G.vertices[j].firstarc;
for(int k = 0; k < G.vexnum; k++ )
{
if(p)
{
if(p->adjvex == k)
{
GL->AdjMatrix[j][k] = p->weight;
p = p->next;
}
}
else
break;
}
}
return GL;
}