//邻接表定义
typedef struct ArcNode{
int adjvex;
ArcNode* next;
}ArcNode;
typedf struct VNode{
int data;
ArcNode* firstarc;
}VNode;
typedef struct{
VNode adjlist[MAXSIZE];
int n,e;
}ALGraph;
//邻接矩阵存储结构
typedef struct{
int d[MAXSIZE];
int arcs[MAXSIZE][MAXSIZE];
int n,e;
}MGraph;
//邻接矩阵转换成邻接表
void invert(MGraph G1,ALGraph g2)
{
g2.n=G1.n;
g2.e=G2.e;
ArcNode *p;
for(int i=0;i<G1.n;i++) { g2.adjlist[i].firstarc=NULL; }
for(int i=0;i<G1.n;i++)
{
for(int j=0;j<G1.n;j++)
{
if(G1.arcs[i][j]!=0)
{
p->adjvex=j;
p->next=g2.adjlist[j].firstarc;
g2.adjlist[j].firstarc=p;
}
}
}
}
//邻接表转换成邻接矩阵
void invert(MGraph G1,ALGraph g2)
{
G1.n=g2.n;
G1.e=g2.e;
ArcNode *p;
for(int i=0;i<g2.n;i++)
{
G1.d[i]=g2.adjlist[i].data;
p=g2.adjlist[i].firstarc;
while(p!=NULL)
{
G1.[i][p->adjvex]=1;
p=p-next;
}
}
}