c++显示无向网和有向网的邻接矩阵
时间: 2023-06-19 17:07:10 浏览: 99
C++数据结构以邻接矩阵方式确定有向网.docx
以下是C++代码示例,包括无向网和有向网的邻接矩阵的显示:
```c++
#include<iostream>
using namespace std;
const int MAXVEX = 100; // 最大顶点数
const int INFINITY = 65535; // 用65535来表示无穷大
// 定义邻接矩阵
typedef struct {
int vexs[MAXVEX]; // 存储顶点信息
int edges[MAXVEX][MAXVEX]; // 邻接矩阵,存储边信息
int numVertexes, numEdges; // 图的顶点数和边数
} MGraph;
// 创建无向网的邻接矩阵
void CreateMGraph(MGraph &G)
{
int i, j, k, w;
cout << "请输入顶点数和边数:";
cin >> G.numVertexes >> G.numEdges;
// 初始化邻接矩阵
for (i = 0; i < G.numVertexes; i++)
{
G.vexs[i] = i + 1;
for (j = 0; j < G.numVertexes; j++)
{
G.edges[i][j] = INFINITY;
}
}
// 构造邻接矩阵
for (k = 0; k < G.numEdges; k++)
{
cout << "请输入边(vi,vj)上的下标i、下标j和权值w:" << endl;
cin >> i >> j >> w;
G.edges[i-1][j-1] = w;
G.edges[j-1][i-1] = w; // 无向图的邻接矩阵是对称的
}
}
// 创建有向网的邻接矩阵
void CreateMGraph(MGraph &G)
{
int i, j, k, w;
cout << "请输入顶点数和边数:";
cin >> G.numVertexes >> G.numEdges;
// 初始化邻接矩阵
for (i = 0; i < G.numVertexes; i++)
{
G.vexs[i] = i + 1;
for (j = 0; j < G.numVertexes; j++)
{
G.edges[i][j] = INFINITY;
}
}
// 构造邻接矩阵
for (k = 0; k < G.numEdges; k++)
{
cout << "请输入边(vi,vj)上的下标i、下标j和权值w:" << endl;
cin >> i >> j >> w;
G.edges[i-1][j-1] = w;
}
}
// 显示邻接矩阵
void ShowMGraph(MGraph G)
{
int i, j;
cout << "邻接矩阵如下:" << endl;
for (i = 0; i < G.numVertexes; i++)
{
for (j = 0; j < G.numVertexes; j++)
{
if (G.edges[i][j] == INFINITY)
{
cout << "∞" << "\t";
}
else
{
cout << G.edges[i][j] << "\t";
}
}
cout << endl;
}
}
int main()
{
MGraph G;
CreateMGraph(G);
ShowMGraph(G);
return 0;
}
```
在无向网中,对于每一条边(vi, vj),我们需要在邻接矩阵中标记edges[i][j]和edges[j][i]的值为边的权值w。
在有向网中,只需要在邻接矩阵中标记edges[i][j]的值为边的权值w即可。
阅读全文