完成无向图的邻接矩阵存储函数。 函数接口定义: bool CreateUG(MGraph &G);
时间: 2024-12-19 07:16:32 浏览: 7
C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
完成一个用于存储无向图的邻接矩阵函数,你可以定义如下的函数原型,它接受一个`MGraph`(一个代表无向图的数据结构)的引用,并返回一个布尔值表示操作是否成功:
```cpp
// 首先,假设MGraph包含一个二维整数数组来表示邻接矩阵,以及一些辅助数据成员
class MGraph {
public:
int** adjMatrix; // 存储邻接矩阵的指针
int numVertices; // 顶点的数量
// 其他可能的成员和方法...
bool CreateUG(MGraph& G) {
// 检查输入是否合法
if (G.numVertices <= 0 || G.adjMatrix == nullptr) {
return false;
}
// 初始化一个大小为numVertices x numVertices 的整型矩阵
G.adjMatrix = new int*[G.numVertices];
for (int i = 0; i < G.numVertices; ++i) {
G.adjMatrix[i] = new int[G.numVertices]; // 对角线元素初始化为0
for (int j = 0; j < G.numVertices; ++j) {
if (i != j) {
G.adjMatrix[i][j] = 0; // 如果不是对角线元素,则初始化为0,表示无边
}
}
}
// 返回true 表示邻接矩阵已成功创建
return true;
}
// 使用完毕后记得释放内存
~MGraph() {
for (int i = 0; i < numVertices; ++i) {
delete[] G.adjMatrix[i];
}
delete[] G.adjMatrix;
}
```
在这个例子中,`CreateUG`函数首先检查输入的合法性,然后创建一个邻接矩阵并设置初始值。注意,在实际应用中,你需要处理好内存分配和释放,以防内存泄漏。
阅读全文