#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
int edge[1000][2]={0};
typedef struct anode
{
int adjvex;
struct anode *next;
}Anode;
typedef struct vnode
{
int vertex;
Anode *first;
}Vnode;
typedef struct
{
int vnum;
int ednum;
Vnode vex[100];
}Lgraph;
Lgraph * createGraph()
{
int i=0,c1,c2;
Anode *bian;
Anode *p;
Lgraph *mG;
mG=(Lgraph *)malloc(sizeof(Lgraph));
mG->ednum=12;
mG->vnum=10;
printf("vnum:");
for(i=0;i<mG->vnum;i++)
{
scanf("%d",&mG->vex[i]);
mG->vex[i].first=NULL;
}
printf("ednum");
for(i=0;i<12;i++)
{
scanf("%d",&edge[i][0]);
scanf("%d",&edge[i][1]);
}
for(i=0;i<mG->ednum;i++)
{
c1=edge[i][0];
c2=edge[i][1];
bian=(Anode *)malloc(sizeof(Anode));
bian->adjvex=c2;
bian->next=NULL;
if(mG->vex[c1].first==NULL)
{
mG->vex[c1].first=bian;
}
else
{
p=mG->vex[c1].first;
while(p->next!=NULL)
{
p=p->next;
p=bian;
}
}
bian->adjvex=c1;
bian->next=NULL;
if(mG->vex[c2].first==NULL)
{
mG->vex[c2].first=bian;
}
else
{
p=mG->vex[c2].first;
while(p->next!=NULL)
{
p=p->next;
p=bian;
}
}
}
return mG;
}
void dispaly(Lgraph *p)
{
Anode *q;
q=(Anode *)malloc(sizeof(Anode));
int i;
for(i=0;i<p->vnum;i++)
{
printf("%d ",p->vex[i]);
while(p->vex[i].first!=NULL)
{
q=p->vex[i].first;
while(p!=NULL)
{
printf("%d ",q->adjvex);
q=q->next;
}
}
printf("\n");
}
}
void main()
{
Lgraph *G;
G=createGraph();
dispaly(G);
}