typedef struct
{
int vexs[MAXV];
int arcs[MAXV][MAXV];
int vexnum,arcnum;
} MGraph;
typedef struct ANode
{
int adjvex;
struct ANode *nextarc;
} ArcNode;
typedef struct Vnode
{
int data;
ArcNode *firstarc;
} VNode;
typedef struct
{
VNode vertices[MAXV];
int vexnum,arcnum;
} ALGraph;
void MatToList(MGraph g,ALGraph *&G)
{
int i,j;
ArcNode *p,*s;
G=(ALGraph *)malloc(sizeof(ALGraph));
for (i=0; i<g.vexnum; i++)
G->vertices[i].firstarc=NULL;
for (i=0; i<g.vexnum; i++)
for (j=0; j<g.vexnum; j++)
if (g.arcs[i][j]!=0)
{
p=(ArcNode *)malloc(sizeof(ArcNode));
p->adjvex=j; p->nextarc=NULL;
if(!G->vertices[i].firstarc)
G->vertices[i].firstarc=p;
else{
s=G->vertices[i].firstarc;
while(s->nextarc) s=s->nextarc;
s->nextarc=p;
}
}
G->vexnum=g.vexnum;
G->arcnum=g.arcnum;
}