利用数据结构相关知识建立图的邻接矩阵存储结构(数组表示),并将邻接矩阵输出。
时间: 2024-03-06 07:47:23 浏览: 60
好的,我可以为您介绍一下如何利用数据结构相关知识建立图的邻接矩阵存储结构,并将其输出。
邻接矩阵是一种常见的图的存储结构,它可以用一个二维数组来表示一个图。邻接矩阵中的每个元素表示两个顶点之间是否有边,如果有,则为1;如果没有,则为0。对于无向图来说,邻接矩阵是一个对称矩阵;对于有向图来说,邻接矩阵则不一定对称。
接下来,我们来看一下如何利用数组来表示邻接矩阵。
假设有一个无向图,有5个顶点,边的连接关系如下图所示:
```
1---2
/ \ / \
5---3---4
```
我们可以用一个5*5的数组来表示这个邻接矩阵,数组中的元素表示两个顶点之间是否有边。数组的下标表示顶点的编号,如果下标i和下标j之间有边,则邻接矩阵的第i行第j列和第j行第i列的元素都为1;否则都为0。邻接矩阵的对角线上的元素都为0,因为一个顶点和自己之间没有边。
下面是用数组表示的邻接矩阵:
```
0 1 2 3 4
0 0 1 0 0 1
1 1 0 1 1 0
2 0 1 0 1 1
3 0 1 1 0 1
4 1 0 1 1 0
```
输出邻接矩阵可以使用两层循环,代码如下:
```c++
const int MAXN = 5; // 顶点的数量
int graph[MAXN][MAXN] = {
{0, 1, 0, 0, 1},
{1, 0, 1, 1, 0},
{0, 1, 0, 1, 1},
{0, 1, 1, 0, 1},
{1, 0, 1, 1, 0}
};
// 输出邻接矩阵
for(int i = 0; i < MAXN; i++) {
for(int j = 0; j < MAXN; j++) {
cout << graph[i][j] << " ";
}
cout << endl;
}
```
输出结果为:
```
0 1 0 0 1
1 0 1 1 0
0 1 0 1 1
0 1 1 0 1
1 0 1 1 0
```
希望这个例子能够帮助您理解邻接矩阵的存储结构和输出方式。
阅读全文