《数据结构》实验六-----邻接矩阵 无向图
发布时间:2020-12-15 06:03:33 所属栏目:安全 来源:网络整理
导读:实验目的 巩固图的相关知识。掌握图的主要存储方法和遍历方法,学会运用图的知识解决实际问题。 1.图的逻辑结构和存储方法,清楚掌握图的遍历操作。 2.掌握图的存储方法的实现代码。 3.学习图的相关知识来解决实际问题。 实验内容 1.自己画一无个图(有向或
实验目的 巩固图的相关知识。掌握图的主要存储方法和遍历方法,学会运用图的知识解决实际问题。 1.图的逻辑结构和存储方法,清楚掌握图的遍历操作。 2.掌握图的存储方法的实现代码。 3.学习图的相关知识来解决实际问题。 实验内容 1.自己画一无个图(有向或无向均可),使用分别邻接矩阵和邻接表存放图。实现图的输入,并使用两种遍历方法输出图顶点。 图结构如下:
源代码: 头文件MGraph.h:
#ifndef MGraph_H #define MGraph_H const int N = 10; template<class T> class MGraph { public: MGraph(T arr[],int n,int e); ~MGraph(){}; void BFS(int v); void DFS(int v); private: T vertex[N]; int arc[N][N]; int vertexNum,arcNum; }; template<class T> MGraph<T>::MGraph(T arr[],int e) { int i,j,k; vertexNum = n,arcNum = e; for (i = 0; i < vertexNum; i++) vertex[i] = arr[i]; for (i = 0; i < vertexNum; i++) for (j = 0; j < vertexNum; j++) arc[i][j] = 0; for (k = 0; k < arcNum; k++) { cout << "输入两点的编号:n"; cin >> i; cin>> j; arc[i][j] = 1; arc[j][i] = 1; } } template<class T> void MGraph<T>::DFS(int v) { int j; cout << vertex[v]; visited[v] = 1; for (j = 0; j < vertexNum; j++) if (arc[v][j] == 1 && visited[j] == 0) DFS(j); } template<class T> void MGraph<T>::BFS(int v) { int Q[N]; int front = -1; int rear = -1; cout << vertex[v]; visited[v] = 1; Q[++rear] = v; while (front!=rear) { v = Q[++front]; for (int j = 0;j<vertexNum;j++) if (arc[v][j] == 1 && visited[j] == 0) { cout << vertex[j]; visited[j] = 1; Q[++rear] = j; } } } #endif源文件MGraph_main.cpp: #include<iostream> #include<stdlib.h> #include"MGraph.h" using namespace std; char response; int visited[N]={0}; int main() { char S[]{'A','B','C','D','E','F'}; MGraph<char> G(S,6,6); for (int i = 0; i < N; i++) visited[i] = 0; cout << "深度优先遍历的序列为:"; G.DFS(0); cout << endl; for (int i = 0; i < N; i++) visited[i] = 0; cout << "广度优先遍历的序列为:"; G.BFS(0); cout << endl; system("pause"); return 0; }运行截图:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 毕设中巩固的技术(二)Bootstrap常用组件实例
- angular – ngOnInit不在错误页面组件上运行
- Angular2入门——(2)模板语法
- angularjs – 在单页面应用程序中实现Paypal
- 关于bootstrap datetimepicker位置显示错误的bug修复
- 如何添加命令以bash历史记录,而不执行它?
- Shell,内核和API有什么区别?
- angularjs – 使用AngularFire时,光标会在键入时跳转到字段
- 前端每周清单第 50 期: AngularJS and Long Term Support,
- twitter-bootstrap – Bootstrap:如何在网格设计中的任何位