33,027
社区成员




#include <stdio.h>
#include <malloc.h>
#define MaxVertexNum 100
//表结点
typedef struct node
{
int adjvex; //邻接点在图中的位置
node *nextarc;//下一个顶点域
int info; //数据域,存储与弧或边的相关信息
}EdgeNode;
//头结点
typedef struct
{
int vexdata;//头结点数据域
EdgeNode *firstarc;//指向链表的第一个结点
}VertexNode,AdjList[MaxVertexNum];//AdjList是邻接表类型
typedef struct
{
AdjList adjlist; //邻接表
int n,e; //图中当前顶点数和边数
}ALGraph;
//建立无向图的邻接表
void CreateALGraph(ALGraph *g)
{
int i,j,k;
printf("请输入无向图的邻接表顶点数,边数:\n");
scanf("%d%d",&g->n,&g->e);
//建立顶点表
for(i=0;i<g->n;i++)
{
g->adjlist[i].vexdata=i;
g->adjlist[i].firstarc=NULL;
}
//建立边表
EdgeNode *s;
for(k=0;k<g->e;k++)
{
printf("请输入边表的对应顶点vi,vj的位置:");
scanf("%d%d",&i,&j);
s=(EdgeNode *)malloc(sizeof(EdgeNode));//生成边表结点
s->adjvex=j; //邻接点序号为j
s->nextarc=g->adjlist[i].firstarc;
g->adjlist[i].firstarc=s; //将新结点*s插入顶点vi的表头部
s=(EdgeNode *)malloc(sizeof(EdgeNode));
s->adjvex=i; //邻接结点序号为i
s->nextarc=g->adjlist[j].firstarc;
g->adjlist[j].firstarc=s; //将新结点*s插入结点vj的表头部
}
}
void main()
{
}