C++面向对象的数据结构之 图(邻接矩阵表示)

图是由顶点集合(Vertex)及顶点间的关系集合组成的一种非线性数据结构。加上一些基本操作即构成了抽象的数据类型(现只介绍无向图)。其接口如下:
分为几个方面 1.图的基本概念2.图的存储结构3.图的邻接矩阵表示4.图的遍历(深度优先搜素和广度优先搜素)5.最小生成树(Kruskal算法和Prim算法)。

其中,图的接口如下:

bool Empty()const//判空
bool Full()const//判满
int  GetNumVertex()const//获取顶点
int GetNumEdge()const//获取边
virtual int GetVertexIndex(const Type &v)const = 0;//获取顶点位置即,下标
virtual void PrintGraph()const = 0;//打印
virtual bool InsertVertex(const Type &v) = 0;//插入顶点
virtual bool InsertEdge(const Type &v1, const Type &v2) = 0;//插入边
virtual bool RemoveVertex(const Type &v) = 0;//删除边
virtual bool RemoveEdge(const Type &v1, const Type &v2) = 0;//删除边
virtual int  GetFirstNeighbor(const Type &v) = 0;//找顶点的第一个邻接顶点
virtual int  GetNextNeighbor(const Type &v, const Type &w) = 0;//找顶点的第一个邻接顶点的下一个邻接顶点

现在用c++进行无向图的各个基本接口实现操作。

C++面向对象的数据结构之 图(邻接矩阵表示)_第1张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第2张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第3张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第4张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第5张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第6张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第7张图片

C++面向对象的数据结构之 图(邻接矩阵表示)_第8张图片

主函数为

C++面向对象的数据结构之 图(邻接矩阵表示)_第9张图片

其结果:C++面向对象的数据结构之 图(邻接矩阵表示)_第10张图片

你可能感兴趣的:(C++面向对象的数据结构之 图(邻接矩阵表示))