2019独角兽企业重金招聘Python工程师标准>>>
问题描述
使用邻接矩阵存储下图所示无向图
** **
解题思路
创建一个邻接矩阵
程序实现
#include <stdlib.h>
#include <stdio.h>#define MAXVEX 10
/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int Status;
/* 顶点类型应由用户定义 */
typedef char VertexType;
/* 边上的权值类型应由用户定义 */
typedef int EdgeType;typedef struct {VertexType vex[MAXVEX];EdgeType arc[MAXVEX][MAXVEX];int numNodes, numEdges;
} MyGraph, *GraphPlus;void CreateMyGraph(GraphPlus *plus);
int main(void) {int i, j;GraphPlus plus;CreateMyGraph(&plus);for (i = 0; i < plus->numNodes; i++) {for (j = 0; j < plus->numNodes; j++) {printf("%d\t", plus->arc[i][j]);}printf("\n");}
}void CreateMyGraph(GraphPlus *plus) {int i, j, k, w;printf("请输入顶点数和边数:\n");scanf("%d,%d", &i, &j);*plus = (GraphPlus)malloc(sizeof(MyGraph));getchar();(*plus)->numNodes = i;(*plus)->numEdges = j;// 读入顶点数for (i = 0; i < (*plus)->numNodes; i++) {scanf("%c", &(*plus)->vex[i]);}// 初始化边数组for (i = 0; i < (*plus)->numNodes; i++) {for (j = 0; j < (*plus)->numNodes; j++) {(*plus)->arc[i][j]=0;}}// 读入numEdges条边,建立邻接矩阵for(k = 0; k < (*plus)->numEdges; k++) {printf("输入边(vi,vj)上的下标i,下标j:\n");scanf("%d,%d", &i, &j);(*plus)->arc[i][j] = 1;// 因为是无向图,矩阵对称(*plus)->arc[j][i] = (*plus)->arc[i][j];}
}