Chinaunix首页 | 论坛 | 博客
  • 博客访问: 132035
  • 博文数量: 44
  • 博客积分: 956
  • 博客等级: 准尉
  • 技术积分: 521
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-18 12:45
文章分类
文章存档

2012年(11)

2011年(33)

分类: C/C++

2011-12-21 17:44:32

无向连同图的深度优先遍历:
    先遍历自己结点,然后遍历第一连接点,然后遍历后一连接点,在遍历连接点时遵循相同的规律。
在遍历时,若遇到已经遍历的顶点,则不需要遍历。
这样,会优先遍历一条深度最长的线
 
算法:
intmatrix[][N],图的矩阵链接存储方式所存储的图,
int v:要先遍历的顶点结点。
int visitd[]:如果遍历过相应的顶点,则该位置为1
 
void dfs(int matrix[][N], int v, int visitd[])
{
         遍历v,置相应的标志位;
          int u = v的第一连接点;
         while(u>=0){
                 if(u未被遍历)
                        dfs(u);
                  u = 下一连接点;
          }
 
}
 
广度优先遍历:会优先遍历距离自己最近的顶点:
void bfs(int matrix[][N], int v, int visitd[])
{
        创建一个队列;
        遍历v,并置相应的标志位;
        入队(v);
        while(队列非空){
               v =  出队();
               u = v的下一连接点;
               while(u >= 0){
                   if (u没有被遍历){
                      遍历u,并置相应的标志位;
                      入队(u);
                    }
                u = 下一连接点;
                }
                
           }
 
}
阅读(1203) | 评论(0) | 转发(0) |
0

上一篇:数据结构(10)

下一篇:Qt使用基础(12)

给主人留下些什么吧!~~