C++数据结构之Graph/GraphMatrix的实现

总结

  1. Graph是抽象模板类,以纯虚函数的形式展示了图的全部ADT
  2. 为什么Graph::reset中设置属性左值要写为status(i) parent(i),这样还要单独写status()parent(i)?为了在不同实现的图中都能用基类的这个reset函数。为什么在实现之前的数据结构时很少有这种写法?因为图的封装程度高。比如,之前remove()参数是指针,依赖于底层结构,而Graph::remove()的参数是顶点编号,这就与图的具体实现一点关系都没有了。
  3. remove() 删除完边的第i行之后马上删掉V的第i个元素,否则对应不上了
  4. 写了那么多发现vector::remove()的返回值一定得是删除值,否则麻烦(删之前先备份成tmp)
  5. GraphMatrix是具体实现,Graph是ADT+算法
  6. 有向图

边和顶点的几种状态

struct Vertex

struct Edge

抽象模板类 Graph

邻接矩阵GraphMatrix

你可能感兴趣的:(算法,c++,数据结构,开发语言)