基于c采用邻接矩阵构建一个无向图,代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct graph
{
int nVertex;
int nEdge;
int* pMatrix;
}Graph;
Graph *CreateGraph()
{
Graph *pGraph = NULL;
pGraph = (Graph*)malloc(sizeof(Graph));
int nV;
int nE;
printf("input nV and nE:\n");
scanf("%d%d", &nV, &nE);
pGraph->nVertex = nV;
pGraph->nEdge = nE;
pGraph->pMatrix = (int *)malloc(sizeof(int)*nV*nV);
memset(pGraph->pMatrix, 0, sizeof(int)*nV*nV);
int i;
int v1,v2;
for(i=0;i<nE;i++)
{
printf("input Edge <v1,v2>:");
scanf("%d%d", &v1, &v2);
if(v1 >=1 && v1<=nV && v2>=1 && v2<=nV && v1!=v2 && pGraph->pMatrix[(v1-1)*nV+(v2-1)]==0)
{
pGraph->pMatrix[(v1-1)*nV+(v2-1)] = 1;
pGraph->pMatrix[(v2-1)*nV+(v1-1)] = 1;
}
else
{
i--;
}
}
return pGraph;
}
int main()
{
Graph *pGraph = NULL;
pGraph = CreateGraph();
int i;
for(i=0;i<pGraph->nVertex*pGraph->nVertex;i++)
{
printf("%d ", pGraph->pMatrix[i]);
if((i+1)%pGraph->nVertex == 0)
{
printf("\n");
}
}
return 0;
}