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 为根的生成树*/ } }