7.2.3 Graph类 1用邻接矩阵存储的Graph类 。Graph类声明 //图的最大顶点个数 const int MaxGraphSize 25 template<class T>class Graph private: SeqList<T>VertexList;//顶点表 /邻接矩阵 int edge[MaxGraphSize ]MaxGraphSize ] /当前顶点数 int graphsize
7.2.3 Graph类 1 用邻接矩阵存储的Graph类 ● Graph类声明 // 图的最大顶点个数 const int MaxGraphSize = 25 ; template<class T> class Graph { private: SeqList<T> VertexList ; //顶点表 //邻接矩阵 int edge[ MaxGraphSize ][ MaxGraphSize ] ; //当前顶点数 int graphsize ;
/当前边数 int CurrentEdges //检查顶点vertex是否已在顶点表L中 int FindVertex(SegList<T>&L, const T&vertex ) //返回顶点vertexi在顶点表中的位置(序号) int GetVertexPos(const T&vertex)
//当前边数 int CurrentEdges ; //检查顶点vertex是否已在顶点表L中 int FindVertex( SeqList<T> & L , const T & vertex ) ; //返回顶点vertex在顶点表中的位置(序号) int GetVertexPos( const T & vertex )
public: /构造函数 Graph(void); /检测图是否为空 int GraphEmpty(void)const return VertexList.ListEmpty();} /以下是访问数据的方法 /返回图的顶点个数 int NumberOfVertices(void )const {return graphsize;}
public: //构造函数 Graph(void) ; //检测图是否为空 int GraphEmpty(void)const { return VertexList.ListEmpty( ) ; } //以下是访问数据的方法 //返回图的顶点个数 int NumberOfVertices( void ) const {return graphsize; }
/返回图的边个数 int NumberOfEdges(void )const {return CurrentEdges;} /返回指定边的权值 int GetWeight(const T&vertex1, const T vertex2 ) /返回序号为v的顶点的第一个邻接顶点的序号 int GetFirstNeighbor(const int v ) /返回序号为v1的顶点相对于序号为v2的顶点的 下一个邻接顶点的序号 int GetNextNeighbor(const int v1, const int v2 )
//返回图的边个数 int NumberOfEdges( void ) const {return CurrentEdges; } //返回指定边的权值 int GetWeight( const T & vertex1 , const T & vertex2 ) ; //返回序号为v的顶点的第一个邻接顶点的序号 int GetFirstNeighbor( const int v ) ; //返回序号为v1的顶点相对于序号为v2的顶点的 下一个邻接顶点的序号 int GetNextNeighbor( const int v1 , const int v2 ) ;
/以下是修改图的方法 /插入一个顶点 void InsertVertex(const T vertex ) /插入一条边(vl,v2),边权值为weight void InsertEdge(const T vertex1, const T&vertex2,int weight ) //在图中删去顶点vertexi和所有与它相关联的边 void Deletevertex(const T&vertex ) /在图中删去边 void DeleteEdge const T&vertexl,const T vertex2); };
//以下是修改图的方法 //插入一个顶点 void InsertVertex( const T & vertex ) ; //插入一条边(v1,v2),边权值为weight void InsertEdge( const T & vertex1 , const T & vertex2 ,int weight ) ; //在图中删去顶点vertex和所有与它相关联的边 void DeleteVertex( const T & vertex ) ; //在图中删去边 void DeleteEdge ( const T & vertex1 , const T & vertex2 ) ; };