文章目录
有向/无向不带权图
带权图
定义图的结构体
#define Default_Vertex_Size 10
#define T char
typedef struct GraphMtx
{
int MaxVertices;//最大顶点容量
int NumVertices;//图中顶点个数
int NumEdges;//图中边的条数
T *VerticesList;//指向存有顶点的空间的指针
int **Edge;//指向存矩阵的空间的指针
}GraphMtx;
初始化
void InitGraph(GraphMtx *g)
{
g->MaxVertices = Default_Vertex_Size;
g->NumVertices = g->NumEdges = 0;
//为存储顶点的空间进行初始化
g->VerticesList = (T*)malloc(sizeof(T)*(g->MaxVertices));
assert(g->VerticesList != NULL);
//为存储矩阵的空间进行初始化
g->Edge = (int**)malloc(sizeof(int*) * g->MaxVertices);
assert(g->Edge != NULL);
for(int i=0; i<g->MaxVertices; ++i)
{
g->Edge[i] = (int*)malloc(sizeof(int) * g->MaxVertices);
}
for(i=0; i<g->MaxVertices; ++i)
{
for(int j=0; j<g->MaxVertices; ++j)
{
g->Edge[i][j] = 0;
}
}
}
分析
分配堆空间