#include <iostream>
#define MAX_VERTS 20
using namespace std;
class Vertex
{
public:
Vertex(char lab) { Label = lab; }
private:
char Label; // 定义字符,
};
class Graph // 这是一个图,
{
public:
Graph();
~Graph();
void addVertex(char lab); // 增加一个定点,就是一个字符,
void addEdge(int start, int end); // 增加一条边,
void printMatrix(); // 将矩阵显示出来,
private:
Vertex* vertexList[MAX_VERTS];
int nVerts; // 这个保存定点的个数,
int adjMat[MAX_VERTS][MAX_VERTS]; // 定义一个矩阵,20*20的,
};
Graph::Graph() // 这个是构造函数,
{
nVerts = 0;
for(int i = 0; i < MAX_VERTS; ++i)
for(int j = 0; j < MAX_VERTS; ++j)
adjMat[i][j] = 0;
}
void Graph::addVertex(char lab)
{
vertexList[nVerts++] = new Vertex(lab);
}
void Graph::addEdge(int start, int end)
{
adjMat[start][end] = 1;
adjMat[end][start] = 1;
}
void Graph::printMatrix()
{
for(int i = 0; i < nVerts; i++)
{
for(int j = 0; j < nVerts; j++)
cout << adjMat[i][j] << " ";
cout << endl;
}
}
Graph::~Graph()
{
for(int i = 0; i < nVerts; i++)
delete vertexList[i];
}
int main()
{
Graph g;
g.addVertex('A'); // 0 是下标为0,
g.addVertex('B'); // 1 是下标为1,
g.addVertex('C'); // 2 是下标为2,
g.addVertex('D'); // 3 是下标为3,
g.addVertex('E'); // 4 是下标为4,
g.addEdge(0,1); // A-B 用下标表示A与B相连,
g.addEdge(0,3); // A-D
g.addEdge(1,0); // B-A
g.addEdge(1,4); // B-E
g.addEdge(2,4); // C-E
g.addEdge(3,0); // D-A
g.addEdge(3,4); // D-E
g.addEdge(4,1); // E-B
g.addEdge(4,2); // E-C
g.addEdge(4,3); // E-D
g.printMatrix();
return 0;
}
图 - 邻接矩阵
最新推荐文章于 2020-07-29 05:32:51 发布