设为首页 加入收藏

TOP

如何实现深度优先遍历(DFS)
2015-07-20 17:34:14 来源: 作者: 【 】 浏览:4
Tags:如何 实现 深度 优先 DFS

DFS实现步骤如下:

①访问顶点V,并标记V已经访问

②查找V的第一个邻接顶点w

③若W存在,则继续执行,否则算法结束

④若W未被访问,则使用DFS递归访问w

⑤查找V的下一个邻接节点,并记为W,转到步骤③

\

对上图进行DFS,则访问顺序为<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+QSBCIEQgQyBFPC9wPgo8cD7KudPDzrG0+sLryOfPwqO6PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">Vector G[maxn] int vis[maxn] void dfs(int u) { vis[u]=1; //设置为已经访问 int d=G[u].Size()//得到顶点u的所有邻接节点,个数为d for(int i=0;i

附上全部代码:

#include
  
   
using namespace std;
#define VertexSize 10
int visit[VertexSize];

typedef struct
{
	int weight[VertexSize][VertexSize];
}Graph;


void Initiate_Graph(Graph *g,int n)
{
	int i,j;
	for(i=0;i
   
    weight[i][j]=0; else g->weight[i][j]=0x7fff; } } void InsertEdge(Graph *g,int v,int w,int weight,int n) { if(v<0 || v>=n||w<0||w>=n) { cout<<"overflow!"<
    
     weight[v][w]=weight; } void dfs(Graph *g,int u,int n) { cout<
     
      weight[u][i]>0 && g->weight[u][i]<0x7fff && !visit[i]) { visit[i]=1; dfs(g,i,n); } } } void main() { Graph g; int n,edge; cout<<"请输入图的顶点个数:"<
      
       >n; cout<<"请输入图的边个数"<
       
        >edge; Initiate_Graph(&g,n); int i,p1,p2,weight; cout<<"请输入顶点-顶点-权值:"<
        
         >p1>>p2>>weight; InsertEdge(&g,p1,p2,weight,n); } dfs(&g,0,n); system("pause"); } 
        
       
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在struts2中访问servletAPI 下一篇(九度OJ)题目1338:角斗士(状..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)