#include"sequence.h" #include<stdlib.h> typedef struct { SequenceList Vertices; int edge[10000][10000]; int numOfEdges; }MatrixGraph; void Initiate(MatrixGraph *G,int n)//初始化 { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i==j) G->edge[i][j]=0; else G->edge[i][j]=10000; } G->numOfEdges=0; ListInitialize(&G->Vertices); } void InsertVertex(MatrixGraph *G,ElemType vertex)//插入顶点 { ListInsert(&G->Vertices,G->Vertices.size,vertex); } void InsertEdge(MatrixGraph *G,int v1,int v2,int weight)//插入一条边 { if(v1<0||v1>=G->Vertices.size||v2<0||v2>=G->Vertices.size) { printf("参数v1或v2越界出错!\n"); exit(1); } G->edge[v1][v2]=weight; G->numOfEdges++; }
时间: 2024-03-04 13:54:23 浏览: 50
c语言函数库-第一章(C标准库).doc
根据你提供的代码,我看到你定义了一个结构体 `MatrixGraph`,它包含了一个顺序表 `Vertices` 和一个二维数组 `edge`,还有一个整数变量 `numOfEdges`。顺序表 `Vertices` 存储了图中的所有顶点,二维数组 `edge` 存储了图中所有边的权值,整数变量 `numOfEdges` 记录了图中边的数量。
在 `Initiate` 函数中,你使用两个嵌套的循环来初始化了一个空图 `G`。具体地,你将 `edge` 数组中的每个元素初始化为一个比较大的数,表示这两个顶点之间没有边。同时,你将 `numOfEdges` 初始化为 0。
在 `InsertVertex` 函数中,你通过调用顺序表的 `ListInsert` 函数,将新的顶点插入到了顺序表 `Vertices` 的末尾。
在 `InsertEdge` 函数中,你首先检查了参数 `v1` 和 `v2` 是否越界,如果越界则输出错误信息并退出程序。如果没有越界,则将边的权值 `weight` 插入到 `edge` 数组中对应的位置上,并将 `numOfEdges` 加 1。
根据你的问题描述,我猜测你可能是在引用 `MatrixGraph` 结构体变量的时候出现了问题。如果你没有正确地定义或者初始化 `MatrixGraph` 结构体变量,那么在引用它的时候可能会出现问题。
你可以检查一下你的代码,在使用 `MatrixGraph` 结构体变量之前是否有正确地定义和初始化它。另外,你也可以提供更多的细节和上下文,这样我才能更好地回答你的问题。
阅读全文