各位看官们,大家好,上一回中咱们说的是深度优先遍历的例子,这一回咱们继续说:深度优先遍历。闲
话休提,言归正转。让我们一起talk C栗子吧!
大家可能会问:咱们上一回刚刚说了深度优先遍历呀,怎么这一回还说它?看官们莫急,我们在上一回中
说了如何使用深度优先遍历方法去遍历图,在实现该方法时使用的是递归原理。我们在这一回中使用循环
原理来实现深度优先遍历,也就是说这是同一个遍历方法的两种不同实现形式。关于深度优先编译的原理
我就不说了,我们重点说下如何使用循环来实现深度优先遍历。循环说着很容易,但是操作起来也不是那
么的容易,下面是具体的实现步骤:
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。
我们在例子中使用了栈,通过栈来控制遍历的深度。其实在递归中也隐含地使用了栈,只是没有明显地写
出来而已。例子中关于栈的代码写的比较粗糙,更好的代码请点击这里查看我们在前面章回中关于栈的讲
解。程序中使用的图和上一回中的图一样,下面是图及其邻接矩阵:
基于该图的运行结果如下所示。大家和上一回的结果比较一下,你会发现,这两种结果是一样的,这也说
明了我们使用不同的方法实现了深度优先遍历,真是殊途同归呀!
--- Show the Graph --- 0 |1 |1 |0 |0 |0 | 1 |0 |0 |0 |1 |0 | 1 |0 |0 |1 |0 |1 | 0 |0 |1 |0 |0 |0 | 0 |1 |0 |0 |0 |1 | 0 |0 |1 |1 |1 |0 | --- DFS --- A->B->E->F->C->D->
各位看官,关于深度优先遍历的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
版权声明:本文为博主原创文章,未经博主允许不得转载。
一起talk C栗子吧(第四十五回:C语言实例--深度优先遍历二)
原文地址:http://blog.csdn.net/talk_8/article/details/48106443