深度优先搜索和广度优先搜索的代码实现

来源:互联网 发布:ubuntu的samba服务器 编辑:程序博客网 时间:2024/05/23 15:45
/*
DFS和BFS的代码实现
Jack Ren,Sep 15th,2015
*/
#include <string>
#include <vector>
#include <iostream>
#include <queue>


using namespace std;




typedef struct node{
int value;
node* next;


};


vector<vector<int>> adjlist;


bool visited[8];


void dfs(int v)
{
cout<<v<<endl;
visited[v] = true;
for(int i = 1;i<adjlist[v].size();i++)
if(!visited[adjlist[v][i]])
{
dfs(adjlist[v][i]);
}
 
}


queue<int> myQ;


void bfs(int v)
{
myQ.push(v);
visited[v] = true;


while(myQ.size()>0)
{
int h = myQ.front();


cout<<h<<endl;


visited[h] = true;


for(int i = 1;i<adjlist[h].size();i++)
{
if(!visited[adjlist[h][i]])
{
myQ.push(adjlist[h][i]);
visited[adjlist[h][i]] = true;
}
}


myQ.pop();
}



}


 
int main()
{
memset(visited,false,8);


adjlist.resize(8);
for(int i=0;i<8;i++)
{
adjlist[i].push_back(i);
}


adjlist[0].push_back(1);
adjlist[0].push_back(2);


adjlist[1].push_back(0);
adjlist[1].push_back(3);
adjlist[1].push_back(4); 


adjlist[2].push_back(0); 
adjlist[2].push_back(5);
adjlist[2].push_back(6);


adjlist[3].push_back(1);
adjlist[3].push_back(7);


adjlist[4].push_back(1); 
adjlist[4].push_back(7); 


adjlist[5].push_back(2); 
adjlist[5].push_back(7); 


adjlist[6].push_back(2); 
adjlist[6].push_back(7); 


adjlist[7].push_back(3); 
adjlist[7].push_back(4); 
adjlist[7].push_back(5); 
adjlist[7].push_back(6); 




cout<<"DFS sequence:"<<endl;
dfs(0);


memset(visited,false,8);


cout<<"BFS sequence:"<<endl;
bfs(0);




return 0;
}
0 0
原创粉丝点击