图的邻接表算法

#define maxvernum 100//最大顶点数为100
typedef struct node  //边表结点
{
	int adjvex;//邻接点域
	struct node * next;//指向下一个邻接点的指针域
}Edgenode;
typedef struct vnode//表头结点
{
	int vertex;//顶点域
	Edgenode * link;//边表头指针
}Vexnode;
typedef Vexnode adjlist[maxvernum];//adjlist是邻接表类型
typedef struct
{
	adjlist adjlist;//邻接表
	int n,e;		//顶点数和边数
}Adjgraph;//Adjgraph是以邻接表方式存储的图类型
//有向图的算法如下:
void greatealgraph(Adjgraph * g)//建立有向图的邻接表存储
{
	int i,j,k;
	Edgenode * s;
	printf("请输入顶点数和边数(输入格式为:顶点数,边数):\n");
	scanf("%d,%d",&(g->n),&(g->e));
	printf("请输入顶点信息(输入格式为:顶点号<CR>):\n");
	for(i=0;i<g->n;i++)//建立有n个顶点的顶点表
	{
		scanf("\n%c",&(g->adjlist[i].vertex));
		g->adjlist[i].link=NULL;//设为空表头指针
	}
	printf("请输入边的信息(输入格式为:i,j):\n");
	for(k=0;k<g->e;k++)//建立边表
	{
		scanf("\n%d,%d",&i,&j);//读入边<vi,vj>的顶点对应序号
		s=(Edgenode*)malloc(sizeof(Edgenode));//生成新的边表结点s
		s->adjvex=j;//邻接点序号为j
		s->next=g->adjlist[i].link;
		g->adjlist[i].link=s;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值