图的遍历 C++
来源:互联网 发布:数据采集器厂家 编辑:程序博客网 时间:2024/06/16 20:11
#include <iostream>#include <queue>using namespace std;const int MaxSize = 5;template <class T>class MGraph{public:MGraph(T a[], int b[][MaxSize],int n,int e);//构造函数,建立具有n个顶点e条边的图void dfsTraverse(int v);//深度优先遍历图void bfsTraverse(int v);//广度优先遍历图private:T vertex[MaxSize];//存放图中顶点的数组int arc[MaxSize][MaxSize];//存放图中边的数组int vertexNum, arcNum;//图的顶点数和边数int visited[MaxSize];//有没访问数组queue<int> que;};template <class T>MGraph<T>::MGraph(T a[], int b[][MaxSize],int n,int e){vertexNum = n;arcNum = e;for(int i=0;i<vertexNum;i++){vertex[i] = a[i];visited[i]=0;}for(int i=0;i<vertexNum;i++)//直接放入邻接矩阵for(int j=0;j<vertexNum;j++)arc[i][j]=b[i][j];}template <class T>void MGraph<T>::dfsTraverse(int v)//深度优先{cout<<vertex[v]<<" ";//访问一次,标记已被访问过visited[v]=1;for(int j=0;j<vertexNum;j++)if(arc[v][j]==1 && visited[j]==0)//存在此边,且没被访问过dfsTraverse(j);}template <class T>void MGraph<T>::bfsTraverse(int v)//广度优先{for(int i=0;i<vertexNum;i++){visited[i]=0;}cout<<vertex[v]<<" ";//访问一次,标记已被访问过visited[v]=1;que.push(v);//被访问顶点入队while(que.empty()!=1){v = que.front();//队头元素出队放入v中que.pop();for(int j=0;j<vertexNum;j++)if(arc[v][j]==1 && visited[j]==0)//判断是否有边,且顶点有没有别访问过{cout<<vertex[j]<<" ";visited[j]=1;que.push(j);}}}void main(){char a[5] = {'A','B','C','D','E'};//邻接矩阵int b[5][5] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,0,0,1,1,0,0,};MGraph<char> GM(a,b,5,6);cout<<"广度优先遍历:"<<endl;GM.dfsTraverse(0);//从A开始访问cout<<endl;cout<<"深度优先遍历:"<<endl;GM.bfsTraverse(0);//从A开始访问cout<<endl;}
0 0
- 图的遍历(C#)
- 图的深度遍历与广度遍历(C++)
- 数据结构(C++)<图的深度遍历和广度遍历>
- C语言 图的深度 遍历
- C语言数据结构之图的遍历
- C广度优先搜索,图的遍历
- 图的创建与遍历(C++)
- 图的遍历——C语言
- C语言-数据结构-图的遍历
- codeforces 839C Journey(图的遍历)
- 数据结构 图的遍历 C语言版
- 图的遍历 -深度优先—C
- 图的广度优先遍历—C
- <<c>>树的遍历
- C遍历lua的table
- 图的遍历--使用邻接表作为存储结构的遍历(DFS、BFS)C语言
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- 图的邻接矩阵存储 深度优先遍历 广度优先遍历 C语言实现
- ThinkPHP刘晨:大道至简,只用产品说话
- 随机蛮好玩的
- 【PHP】日期时间戳转换
- 网易邮箱开发最简单demo
- 3、设计模式__创建型__抽象工厂
- 图的遍历 C++
- 字符串--KMP模式匹配算法
- 数据结构--线性表
- yii 2.0设置默认值
- Mac下编写bash脚本并运行
- select函数详解
- 几种自旋锁SpinLock,TicketLock,CLHLock,以及可重入实现要点,非阻塞锁实现要点
- 输入子系统(1):数据结构总结
- 三年技术!该如何选择!