在这里插入代码片
#include<iostream>
#include<string.h>
using namespace std;
//顶点类型
typedef char VertexType;
//边上权值类型
typedef int EdgeType;
//最大定点数
#define MAXVEX 100
//#define INF 65535
typedef struct {
VertexType vexs[MAXVEX]; //顶点表
EdgeType arc[MAXVEX][MAXVEX]; //邻接矩阵
int numNodes; //顶点数
int numEdges; //边数
}MGraph;
//无向网图的邻接矩阵表示法
void CreateMGraph(MGraph& G) {
int i, j, k, w;
cout << "请输入顶点数和边数:" << endl;
cin >> G.numNodes >> G.numEdges;
//读入顶点信息,建立顶点表
cout << "请输入顶点信息:" << endl;
for (i = 0; i < G.numNodes; i++) {
cin >> G.vexs[i];
}
//初始化邻接矩阵
for (i = 0; i < G.numNodes; i++) {
for (j = 0; j < G.numNodes; j++) {
G.arc[i][j] = -1;
}
}
//读入边,建立邻接矩阵
for (k = 0; k < G.numEdges; k++) {
cout << "输入边(vi,vj)上的下标i,下标j和权w:" << endl;
cin >> i >> j >> w;
G.arc[i-1][j-1] = w;
G.arc[j-1][i-1] = G.arc[i-1][j-1]; //无向图,矩阵对称
}
}
void PrintMGraph(MGraph G) {
for (int i = 0; i < G.numNodes; i++) {
for (int j = 0; j < G.numNodes; j++) {
cout << G.arc[i][j] << " ";
}
cout << endl;
}
}
int main() {
MGraph G;
CreateMGraph(G);
PrintMGraph(G);
return 0;
}
图的邻接矩阵表示法
最新推荐文章于 2024-08-19 18:41:12 发布