数据结构-图-C语言-邻接矩阵

数据结构-图-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;//有向边v->w
	WeightType weight;//权重
};
typedef pENode Edge;

/*
*@program 建立一个没有边的图
*@param vertexNum 顶点个数
*@return graph 所建立的图
*/
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;
	}	
}

猜你喜欢

转载自blog.csdn.net/qq_40925226/article/details/83512621