第一次写有些函数调用不熟悉,这里再写一遍
思路:将矩阵初始化全为0;遍历邻接表每个边,修改对应矩阵中的元素为1。最后修改邻接矩阵的边数和节点数。
void AGraphToMGrapg(AGraph GA,MGraph &GM)//传入指针节省空间
{
//漏掉了初始化
for(int i=0;i<GA.vexnum;++i)//vexnum arcnum不规范
for(p=GA.vexNode[i]->firstarc;p!=NULL;p=p->next)//GA.vexNode[i]不规范
GM.vexnum[i][p->ID]=1;//p->ID错误
GM.vexnum=GA.vexnum;
GM.arcnum=GA.arcnum;
}
//修正如下
void AGraphToMGrapg(AGraph *GA,MGraph &GM)//传入指针节省空间
{
//漏掉了初始化
for(int i=0;i<GA->n;++i)
for(int j=0;i<GA->n;++i)
GM.vexnum[i][j]=0;
for(int i=0;i<GA->n;++i)//vexnum arcnum不规范
for(p=GA->adjlist[i]->firstarc;p!=NULL;p=p->nextarc)
GM.adjlist[i][p->adjvex]=1;//p->ID错误
GM.n=GA.n;
GM.e=GA.e;
}