直接上代码:
void linkedDgraph1::DFS_VISIT(linkedDgraph1 &G1,int u)
{
time += 1;
dTime[u] = G1.dTime[u]=time;
color[u] = GRAY;
graphNode<int> *p = Adj[u].first();
while (p != NULL)
{
int v = p->element;
if (color[v] == WHITE)//如果点是白色的
{
precursor[v] = u;
DFS_VISIT(G1, v);
G1.insertEdge(u, v,1);
//cout << u << "-->" << v << endl;
}
p = p->next;
}
color[u] = BLACK;
time += 1;
fTime[u] = G1.fTime[u]=time;
}
void linkedDgraph1::DFS(linkedDgraph1 &G1)
{
time = 0;//计时器
for (int i = 0; i < verticeNumber; i++)
{
if (color[point[i]] == WHITE)
{
DFS_VISIT(G1,point[i]);
}
}
}
再附上这个图的类的定义及构造函数:
class linkedDgraph1
{
public:
linkedDgraph1(int num);//构造函数
//~linkedDgraph1();//