devc++,用邻接矩阵表示图
时间: 2024-12-03 20:13:19 浏览: 18
在Dev-C++中,邻接矩阵是一种常用的图数据结构,它是一个二维数组,其中行代表源节点,列代表目标节点,每个元素值表示两个节点之间是否存在边或者连接。如果节点i与节点j相连,则矩阵[i][j]为1或true;否则为0或false。
创建和操作邻接矩阵通常包括以下几个步骤:
1. 定义矩阵大小:假设你有一个无向图,如果有n个顶点,那么邻接矩阵将是n x n大小。
```cpp
int numVertices; // 图的顶点数
bool adjacencyMatrix[numVertices][numVertices]; // 初始化为false的邻接矩阵
```
2. 添加边:如果需要添加一条从节点i到节点j的边,将adjacencyMatrix[i][j]设置为true或1。
```cpp
adjacencyMatrix[i][j] = true; // 如果存在边
```
3. 检查边:判断两个节点是否相连可以通过查找对应的矩阵元素。
```cpp
if (adjacencyMatrix[i][j]) {
std::cout << "There is an edge between node " << i << " and node " << j << ".\n";
} else {
std::cout << "No edge between node " << i << " and node " << j << ".\n";
}
```
4. 寻找邻居:获取某个节点的所有邻居,可以遍历其对应行或列的非零元素。
```cpp
std::vector<int> neighbors(i); // 初始化一个邻居列表
for (int k = 0; k < numVertices; ++k) {
if (adjacencyMatrix[i][k])
neighbors.push_back(k);
}
```
邻接矩阵的优点是查询效率高,常数时间复杂度O(1),但占用空间大,特别是稀疏图。对于稠密图或频繁的边查询,邻接矩阵非常合适。
阅读全文