#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;
}
}
图的邻接表算法
最新推荐文章于 2025-10-21 15:23:53 发布
本文介绍了一种使用邻接表存储有向图的方法,并提供了详细的C语言代码实现过程。包括定义邻接表结构、创建图的过程以及如何通过用户输入来构建具体的有向图。
3609

被折叠的 条评论
为什么被折叠?



