邻接矩阵实现:
int G[MAXN][MAXN], Nv, Ne; //定义全局变量
void BuiltGraph()
{
int i, j, v1, v2, w;
scanf("%d", &Nv); //节点个数
//建立图
for(i=0; i<Nv; i++)
for(j=0; j<Nv; j++)
G[i][j]=0; //或者INFINITY
scanf("%d", &Ne); //边的条数
for(i=0; i<Ne; i++)
{
scanf("%d %d %d", &v1, &v2, &w);
//建立边
G[v1][v2]=w;
G[v2][v1]=w; //无向图需要加上这一句
}
}
邻接表实现:
LGraph Graph; //定义全局变量
LGraph BuiltGraph()
{
int Nv, Ne, v, e;
Edge E;
scanf("%d", &Nv); //顶点个数
//初始化
for(v=0; v<Nv; v++)
Graph->G[v].FirstEdge=NULL;
scanf("%d", &Ne); //边的条数
//插入边
for(e=0; e<Graph->Ne; e++)
{
E=(Edge)malloc(sizeof(struct ENode));
scanf("%d %d %d", &E->V1, &E->V2, &E->Weight);
E->next=Graph->G[E->V1].FirstEdge;
Graph->G[E->V1].FirstEdge=E;
//如果是无向图,还要加入下面两句话
E->next=Graph->G[E->V2].FirstEdge;
Graph->G[E->V2].FirstEdge=E;
}
//如果顶点有数据
for(v=0; v<Graph->Nv; v++)
scanf("%c", &(Graph->G[v].Data));
return LGraph;
}