用邻接表表示图G=(V,E)时,对每个顶点i属于V,将它的所有邻接顶点存放在一个表中,这个表称为顶点i的邻接表。对每个顶点的邻接表存储在图G的邻接表数组中。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//*********************************
//打印错误信息
void Error(char *s)
{
printf("%s",s);
exit(0);
}
//*********************************
//邻接表结点结构定义
typedef struct Inode *glink;
struct Inode{
int v; //边的另一个顶点
glink next; //邻接表指针
};
//创建一个新的邻接表结点
glink NewLNode(int v,glink next)
{
glink x=(glink)malloc(sizeof(Inode));
x->v=v;x->next=next; //next为邻接表表首,即将新增的结点放在表首
return x;
}
//用邻接表实现有向图的结构定义
typedef struct graph *Graph;
struct graph
{
int n;//顶点数
int e; //边数
glink *adj; //邻接表数组 adj存储有向图的邻接表
}Lgraph