数据结构-图-C语言-邻接矩阵
正式写法
#include <stdio.h>
#include <stdlib.h>
#define MaxVertexNum 50
typedef int WeightType;
typedef int Vertex;
typedef int DataType;
typedef struct GNode *pGNode;
struct GNode {
int nv;
int ne;
WeightType G[MaxVertexNum][MaxVertexNum];
DataType data[MaxVertexNum];
};
typedef pGNode MGraph;
typedef struct ENode *pENode;
struct ENode {
Vertex v, w;
WeightType weight;
};
typedef pENode Edge;
MGraph createGraph(int vertexNum) {
Vertex v, w;
MGraph graph;
graph = (MGraph)malloc(sizeof(GNode));
graph->ne = 0;
graph->nv = vertexNum;
for (v = 0; v < graph->nv; v++)
for (w = 0; w < graph->nv; w++)
graph->G[v][w] = 0;
return graph;
}
void insertEdge(MGraph graph, Edge edge) {
graph->G[edge->v][edge->w] = edge->weight;
}
MGraph buildGraph() {
MGraph graph;
int vertex;
scanf("输入图的顶点数%d", &vertex);
graph = createGraph(vertex);
scanf("输入图的边数%d", &(graph->ne));
if (graph->ne != 0) {
for (int i = 0; i < graph->ne; i++) {
Edge edge = (Edge)malloc(sizeof(struct ENode));
scanf("输入边的起始点%d", &edge->v);
scanf("输入边的结束点%d", &edge->w);
scanf("输入边的权重%d", &edge->weight);
insertEdge(graph, edge);
}
}
for (int i = 0; i < vertex; i++) {
scanf("%c", &(graph->data[i]));
}
}
应试写法
int g[MAX][MAX],nv,ne;
void createGraph(){
int vertex;
int v,w,weight;
int ne;
for(int i=0;v<vertex;v++)
for(int j=0;w<vertex;w++)
g[i][j]=0;
scanf("%d",&ne);
for(int i=0;i<ne;i++){
scanf("%d %d %d",&v,&w,&weight);
g[v][w]=weight;
}
}