void Initiate(AdjMGraph*G, int n) int i,j; for(i=0; i< n; i++) for(=0;j<n;j++) if(i==j G->edgell[il=0; else g->edge i[j]= Max Weight; G->numofEdges=0; /*边的条数置为0* ListInitiate(&G-> vertices); /顺序表初始化*
void Initiate(AdjMGraph *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] = MaxWeight; } G->numOfEdges = 0; /*边的条数置为0*/ ListInitiate(&G->Vertices); /*顺序表初始化*/ }
l void Insert Vertex(AdjMGraph*G, DataType vertex ListInsert(&G->Vertices, G-> Vertices size, vertex); void Insertedge(AdjMGraph*G, int vl, int v2, int weight) if(v1 <ov1>G->Vertices. size v2<0v2>G->Vertices. size) prin("参数v或v越界出错!ln"); exit(1); G->edgelv1lv2]= weight; G->numofEdges++;
void InsertVertex(AdjMGraph *G, DataType vertex) { ListInsert(&G->Vertices, G->Vertices.size, vertex); } void InsertEdge(AdjMGraph *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++; }
void Delete edge(AdjMW Graph*G, int vI, int v2) t if(v1<0v1>G->Vertices. size v2<0v2>G->Vertices. size v1==v2) print"参数v或ⅵ2越界出错!n'"); exit(1); if(g->edgelvlllv2- Max Weight v1===v2) printf("该边不存在!Nm"); exit(O) G->edgelv1lv2= max Weight; G->numofEdges-:
void DeleteEdge(AdjMWGraph*G, int v1, int v2) { if(v1 < 0 || v1 > G->Vertices.size || v2 < 0 || v2 > G->Vertices.size || v1 == v2) { printf("参数v1或v2越界出错!\n"); exit(1); } if(G->edge[v1][v2] == MaxWeight|| v1 == v2) { printf("该边不存在!\n"); exit(0); } G->edge[v1][v2] = MaxWeight; G->numOfEdges--; }
int Get First Vex(AdjMGraph G, int v) int col; if(v<0v>G vertices. size printi("'参数v1越界出错n"); exit(1) for(col= 0; col <=G. vertices. size; col++) if(G edge col>0 &&Gedge[vco] Max Weight) return col; return-1
int GetFirstVex(AdjMGraphG, int v) { int col; if(v < 0 || v > G.Vertices.size) { printf("参数v1越界出错!\n"); exit(1); } for(col = 0; col <= G.Vertices.size; col++) if(G.edge[v][col] > 0 &&G.edge[v][col] < MaxWeight) return col; return -1; }
int GetNext Vex(AdjMGraph G, int vl, int v2) Int co f(v1<o vI>G vertices. size v2<0v2>G Vertices. si prin("参数v或v2越界出错n"); exit(1); for(col=v2+l; col <=G Vertices. size; col++ if(G.edgev1lcol>0 & g.edgelvllcol MaxWeight) return col; return-1;
int GetNextVex(AdjMGraphG, int v1, int v2) { int col; if(v1 < 0 || v1 > G.Vertices.size || v2 < 0 ||v2 > G.Vertices.size) { printf("参数v1或v2越界出错!\n"); exit(1); } for(col = v2+1; col <= G.Vertices.size; col++) if(G.edge[v1][col] > 0 && G.edge[v1][col] < MaxWeight) return col; return -1; }