|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 woiavril 于 2014-5-25 20:27 编辑
第一次拿这个号发帖。这里我就加个注释就行了,这个地方害我白白浪费2个小时,居然是我有个问题没考虑到,蛋疼。- // 邻接矩阵的广度遍历算法
- void BFSTraverse(MGraph G)
- {
- int i, j;
- Queue Q;
-
- for( i=0; i < G.numVertexes; i++ )
- {
- visited[i] = FALSE;
- }
-
- initQueue( &Q );
-
- /*就是下面的for循环害我浪费时间,其实如果从0(运气好的话)开始,里面的while语句就可以把图给遍历
- 为什么还要在这加个for循环,我当时就想这不科学啊!后来才明白居然还分不连通图的情况,如果是连通
- 图的话,从任何一个点开始都可以遍历完,如果是不连通的图就还要从其他顶点开始,所以加了个for,前辈
- 们的代码果然没有一处是多余的,小甲鱼大神居然都不提一下。*/
- for( i=0; i < G.numVertexes; i++ )
- {
- if( !visited[i] )
- {
- printf("%c ", G.vex[i]);
- visited[i] = TRUE;
- EnQueue(&Q, i);
-
- while( !QueueEmpty(Q) )
- {
- DeQueue(&Q, &i);
- for( j=0; j < G.numVertexes; j++ )
- {
- if( G.art[i][j]==1 && !visited[j] )
- {
- printf("%c ", G.vex[j]);
- visited[j] = TRUE;
- EnQueue(&Q, j);
- }
- }
- }
- }
- }
- }
复制代码
|
|