图的存储————邻接表

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值