www.pudn.com > XiaoYuanDaoYouTu.rar > Graph.cpp


#include "Graph.h" 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
Graph::Graph( int numVert )			//构造函数 
{ 
	m_nNumVertex = numVert;			//确定图的顶点的个数 
	m_nNumEdge = 0;					//确定图的边数的个数 
	m_pIndegree = new int[m_nNumVertex];		//为保存图的顶点的入度申请数组,Indegree为数组指针 
	m_pMark = new int [m_nNumVertex];			//为图的顶点的标志位申请数组,Mark为数组指针 
 
	for ( int i = 0; i < m_nNumVertex; i++ )  //确定图的顶点的标志位和入度,即所有顶点的标志位初始化为未被访问过,入度初始化为0 
	{ 
		m_pMark[i] = UNVISITED; 
		m_pIndegree[i] = 0; 
	} 
} 
 
Graph::~Graph()			//析构函数 
{ 
	delete []m_pMark;		//释放Mark数组 
	delete []m_pIndegree;	//释放Indegree数组 
} 
 
int Graph::VerticesNum()	//返回图的顶点个数 
{ 
	return m_nNumVertex; 
} 
 
int Graph::EdgesNum()		//返回图的边数 
{ 
	return m_nNumEdge; 
} 
 
bool Graph::IsEdge( Edge oneEdge )		//如果oneEdge是边则返回TRUE,否则返回FALSE 
{ 
	if ( oneEdge.m_nWeight > 0 && oneEdge.m_nWeight < INFINITY && oneEdge.m_nTo >= 0 ) 
	{ 
		return true; 
	} 
	else 
	{ 
		return false; 
	} 
} 
 
int Graph::FromVerTex( Edge oneEdge )		//返回边oneEdge的始点 
{ 
	return oneEdge.m_nFrom; 
} 
 
int Graph::ToVertex(Edge oneEdge)			//返回边oneEdge的终点 
{ 
	return oneEdge.m_nTo; 
}	 
 
int Graph::Weight(Edge oneEdge)				//返回边oneEdge的权 
{ 
	return oneEdge.m_nWeight; 
}