邻接矩阵
图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示图。⼀个⼀维数组存储图中顶点信息,⼀个⼆维数组(称为邻接矩阵)存储图中的边或弧的信息。假设存储下面的一个无向图。
定义如下的数据结构
//图的邻接矩阵存储结构
typedef struct Graph{
//顶点表
vector<string> Vexs;
//边表,表示顶点与顶点之间的连接关系
vector<vector<int>> arc;
//存储顶点和边的个数
int Vertexs,Edges;
}Graph;
注:此处参考《大话数据结构》,书中的Vexs和arc的数据结构感觉使用起来不方便,因此改为C++中支持的string ,vector。
创建图
定义完了图的基础数据结构以后则开始创造一个图。
void CreateGraph(Graph *G)
{
cout << "请输入顶点个数和边的个数" <<endl;
cin >> G->Vertexs >> G->Edges;
cout << "请输入顶点信息" << endl;
for (int i = 0; i < G->Vertexs; ++i)
{
string tmp;
cin >> tmp;
G->Vexs.push_back(tmp);
}
//边表初始化
vector<vector<int>> data(G->Vertexs, vector<int>(G->Vertexs, 0));
G->arc = data;
for (int i = 0; i < G->Vertexs