一起创业网-为互联网创业者服务

邻接矩阵程序怎么实现

邻接矩阵是一种用于表示图中顶点之间连接关系的数据结构。它是一个二维数组,其中每个元素表示两个顶点之间是否存在边。如果两个顶点之间有边,则对应的矩阵元素为1,否则为0。邻接矩阵的优点是直观易懂,操作方便,特别是在判断两个顶点是否有边或获取边的权重时,可以直接查矩阵。

```cpp

include

include

using namespace std;

class Graph {

private:

int numVertices; // 顶点数量

vector> adjMatrix; // 邻接矩阵

public:

// 构造函数,初始化邻接矩阵

Graph(int vertices) : numVertices(vertices) {

adjMatrix.resize(numVertices, vector(numVertices, 0)); // 初始化矩阵为0

}

// 添加边

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++实现一个简单的邻接矩阵,并添加和打印边。你可以根据需要扩展这个示例,例如添加更多的图操作函数,如删除边、判断两个顶点是否相连等。