东南漫画正版澳门资料大全下载安装最新版
在C++中,图可以使用邻接矩阵来存储。邻接矩阵是一个二维数组,其中矩阵的行和列表示图的顶点,而矩阵中的值表示边的权重或者两个顶点之间是否有边相连。对于无向图,邻接矩阵是一个对称矩阵,因为边是没有方向的。而对于有向图,邻接矩阵则不一定是对称的。
下面是一个示例代码,展示了如何使用邻接矩阵存储一个无向图:
#include <iostream> using namespace std; const int MAXV = 100; // 图中顶点的最大个数 int graph[MAXV][MAXV]; // 邻接矩阵 int main() { int V, E; // V是顶点个数,E是边的个数 cin >> V >> E; // 初始化邻接矩阵,设置所有边的权重为0 for (int i = 0; i < V; i++) { for (int j = 0; j < V; j++) { graph[i][j] = 0; } } // 读入所有边,并将其存储到邻接矩阵中 for (int i = 0; i < E; i++) { int u, v; cin &新澳门开奖结果2024开奖记录查询网址 gt;> u >> v; graph[u][v] = 1; graph[v][u] = 1; // 对于无向图,要将邻接矩阵设为对称矩阵 } // 打印邻接矩阵 for (int i = 0; i < V; i++) { for (int j = 0; j < V; j++) { cout << graph[i][j] << " "; } cout << endl; } return 0; }
上述代码中,我们首先定义了一个大小为的二维数组作为邻接矩阵,然后通过循环将其所有元素初始化为0。接着,我们读入边的个数和顶点个数,并将每一条边存储到邻接矩阵中。最后,我们打印出整个邻接矩阵。
需要注意的是,对于稀疏图(边的数量比较少)来说,使用邻接矩阵存储会浪费大量的空间,因为大部分元素都是0。此时可以使用邻接表来存储图。
邻接矩阵存储图的缺点是浪费空间,当图的顶点数量很大时,矩阵中大部分的元素都是0,占用大量的存储空间,而且在图中存在大量的空边(即不存在的边)时,这种存储方式会浪费更多的空间。
另外,邻接矩阵存储方式不太适合表示稀疏图,因为在稀疏图中,顶点之间的边很少,所以矩阵中大部分的元素都是0,浪费存储空间。
相比而言,邻接表存储方式更加节省空间,而且适合表示稀疏图。