#define MAXNODE 30
#include<stdio.h>
#include<stdlib.h>
typedef int elemtype;
typedef struct arc
{ int AdjVertex;
struct arc * NextArc;
}arctype;
typedef struct
{ elemtype Vertex;
arctype * FirstArc;
}vertextype;
typedef vertextype adjlisttype[MAXNODE];
int LocVertex(adjlisttype Graph,int v)
{ int k;
for(k=0;k<MAXNODE;k++)
{ if(Graph[k].Vertex==v) return k;}
}
int main()
{ int i,j,n,e,k;
int v1,v2;
arctype *p;
adjlisttype Graph;
printf("\n输入图中顶点的个数n和边数e:\n");
scanf("%d%d",&n,&e);
printf("\n输入顶点的数据:\n");
for(k=0;k<n;k++)
{ scanf("%d",&Graph[k].Vertex);
Graph[k].FirstArc=NULL;
}
printf("\n输入图中各边,次序为弧头编号 弧尾编号:\n");
for(k=0;k<e;k++)
{ scanf("%d%d",&v1,&v2);
i=LocVertex(Graph,v1);
j=LocVertex(Graph,v2);
p=(arctype *)malloc(sizeof(arctype));
p->AdjVertex=j;
p->NextArc=Graph[i].FirstArc;
Graph[i].FirstArc=p;
}
printf("\n图的邻接表结构为:\n");
for(i=0;i<n;i++)
{ printf("I=%d",i);
v1=Graph[i].Vertex;
printf("Vertex: %d",v1);
p=Graph[i].FirstArc;
while(p!=NULL)
{ v2=p->AdjVertex;
printf("- ->%d",v2);
p=p->NextArc;
}
printf("\n");
}
return 0;
}
图的存储————邻接表
最新推荐文章于 2022-11-18 23:34:00 发布