邻接矩阵是一种用于表示图中顶点之间连接关系的数据结构。它是一个二维数组,其中每个元素表示两个顶点之间是否存在边。如果两个顶点之间有边,则对应的矩阵元素为1,否则为0。邻接矩阵的优点是直观易懂,操作方便,特别是在判断两个顶点是否有边或获取边的权重时,可以直接查矩阵。
```cpp
include include using namespace std; class Graph { private: int numVertices; // 顶点数量 vector public: // 构造函数,初始化邻接矩阵 Graph(int vertices) : numVertices(vertices) { adjMatrix.resize(numVertices, vector } // 添加边 void addEdge(int src, int dest) { if (src >= 0 && src < numVertices && dest >= 0 && dest < numVertices) { adjMatrix[src][dest] = 1; // 无向图,对称设置 adjMatrix[dest][src] = 1; } else { cout << "无效的顶点索引!" << endl; } } // 打印邻接矩阵 void printMatrix() { for (int i = 0; i < numVertices; i++) { for (int j = 0; j < numVertices; j++) { cout << adjMatrix[i][j] << " "; } cout << endl; } } }; int main() { Graph g(5); // 创建一个包含5个顶点的图 g.addEdge(0, 1); g.addEdge(0, 4); g.addEdge(1, 2); g.addEdge(1, 3); g.addEdge(1, 4); g.addEdge(2, 3); g.addEdge(3, 4); g.printMatrix(); // 打印邻接矩阵 return 0; } ``` 代码解释 `Graph`类包含两个私有成员变量:`numVertices`(顶点数量)和`adjMatrix`(邻接矩阵)。 `Graph(int vertices)`:初始化邻接矩阵,将矩阵大小设置为`numVertices x numVertices`,并用0初始化所有元素。 `void addEdge(int src, int dest)`:在邻接矩阵中添加一条从`src`到`dest`的边。由于是无向图,所以需要同时设置`adjMatrix[src][dest]`和`adjMatrix[dest][src]`为1。 `void printMatrix()`:遍历邻接矩阵并打印每个元素。 创建一个包含5个顶点的图,并添加一些边。 打印邻接矩阵。 这个示例展示了如何使用C++实现一个简单的邻接矩阵,并添加和打印边。你可以根据需要扩展这个示例,例如添加更多的图操作函数,如删除边、判断两个顶点是否相连等。类定义
构造函数
添加边
打印邻接矩阵
主函数