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;
}