void DESForest ( Graph G, CSTree *T ) |
{ /*建立无向图G 的深度优先生成森林的孩子兄弟链表T*/ |
T=NULL; |
for ( v=0; v<G.vexnum; ++v ) |
if ( !visited[v]=FALSE; |
for ( v=0; v<G.vexnum; ++v ) |
if ( !visited[v] ) /*顶点v 为新的生成树的根结点*/ |
{ |
p= ( CSTree ) malloc ( sixeof ( CSNode ) ); /*分配根结点*/ |
p={GetVex ( G,v ).NULL,NULL}; /*给根结点赋值*/ |
if ( !T ) |
( *T ) =p; /*T 是第一棵生成树的根*/ |
else q->nextsibling=p; /*前一棵的根的兄弟是其它生成树的根*/ |
q=p; /*q 指示当前生成树的根*/ |
DFSTree ( G,v,&p ); /*建立以p 为根的生成树*/ |
} |
} |