图遍历_邻接表

来源:互联网 发布:淘宝属于腾讯软件吗 编辑:程序博客网 时间:2024/06/14 02:12
/*图遍历_邻接表*/#include <stdlib.h>#include <memory.h>#include <iostream>#include <queue>using namespace std;#define NODE_NUM 10//邻接表 struct Node{     vector<int> adj;}node[NODE_NUM];int vetexNum , edgeNum;int visit[NODE_NUM];//深度遍历 void DFS(int k){    visit[k] =1;    cout << k << endl;     for(int i=0; i<node[k].adj.size(); i++)    {       if(!visit[node[k].adj[i]])         DFS(node[k].adj[i]);            }}//---------广度遍历-------------void BFS(int k){     queue<int> q;     q.push(k);     visit[k] = 1;     cout << k << endl;     while(!q.empty())     {         int qHead = q.front();                      Node current = node[qHead];         q.pop();         for(int i=0; i<current.adj.size(); i++ )         {             if(!visit[current.adj[i]])             {               visit[current.adj[i]] = 1;               cout << current.adj[i] << endl;               q.push(current.adj[i]);               }                   }                    }   }int main(){   freopen("in.txt", "r", stdin);   freopen("out.txt", "w", stdout);      while(cin >> vetexNum >> edgeNum)   {         memset(visit,0,sizeof(visit));         for(int i=1; i<=edgeNum; i++)         {            int start, end;            cin >> start >> end;            node[start].adj.push_back(end);            node[end].adj.push_back(start);            }                    cout << "深度优先搜索"<< endl;           DFS(0);         cout << endl;         memset(visit,0,sizeof(visit));         cout << "广度优先搜索"<< endl;         BFS(0);        }       return 0;}

原创粉丝点击