代码中所用到的结构体
typedef struct arccell
{
int adj;
char *info;
}ArcCell,AdjMatrix[MAX][MAX];
typedef struct
{
int vexs[MAX];
AdjMatrix arcs;
int vexnum,arcnum;
GraphKind kind;
}MGraph,*pMGraph;
构造无向图
- 这里,无向图用的是矩阵存储
- 并且在初始化的时候已经将矩阵每个点的数据自动赋值,并在整个邻接矩阵中,每个点的数据赋值为无穷大,代码中是以INF 999999来表示无穷大。
int Locatevex(pMGraph G,int v)
{
int i;
for(i=0;i<G->vexnum;i++)
{
if(G->vexs[i]==v)
{
return i;
}
}
if(i==G->vexnum)
{
return -1;
}
}
int CreateUDN(pMGraph G)
{
int i,j,k;
int v1,v2,loc;
int n,m,w;
printf("Please input the vex number arc number start location:\n");
scanf("%d%d%d",&(G->vexnum),&(G->arcnum),&loc);
for(i=0;i<G->vexnum;i++)
{
G->vexs[i]=i+1;
}
for(i=0;i<(G->vexnum);i++)
{
for(j=0;j<(G->vexnum);j++)
{
G->arcs[i][j].adj=INF;
G->arcs[i][j].info=NULL;
}
}
for(k=0;k<G->vexnum;k++)
G->arcs[k][k].adj=0;
for(i=0;i<G->arcnum;i++)
{
printf("Please input the v1 v2 w.\n");
scanf("%d%d%d",&v1,&v2,&w);
getchar();
n=Locatevex(G,v1);
m=Locatevex(G,v2);
if(m==-1||n==-1)
{
printf("no this vertex");
return;
}
else
{
G->arcs[n][m].adj=w;