Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125784
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 354
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-01 15:34
个人简介

不晓得说啥子

文章分类

全部博文(42)

文章存档

2015年(41)

2014年(1)

我的朋友

分类: C/C++

2015-04-03 09:23:53

一、主要数据结构:
1、  map[ n ][ n ] : 记录节点 i是否可以到达 j(一般是有向图) 

2、index[ n ] :  记录每一个节点的入度



二、主要步骤:
1、最外层一个for循环  :  1->n   每一次循环找到一个节点(如果拓扑排序存在的话)

2、在每一次循环中再循环从Index[ 1....n ]中寻找 index[i] == 0的 i, 证明节点i的入度已经为0,则将该节点输出,再利用一个循环从map[ i][1...n ] 找到i能到达的节点j (map[ i ][ j ] == 1),
     将对应的节点j的入度减小1(index[ j ]--)。

三、主要代码

     for(  int i=0; i
          for(int j=0; j
               if(index[ j ] == 0){
                    printf("%d \n", j );
                    for(int k=0; k
                             if(map[j][k] == 1){
                                   index[k]--;
                              }
                    }
               }
          }
      }
阅读(1134) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~