大话数据结构之图-邻接矩阵DFS(C++)

el/2024/4/12 15:34:31

大话数据结构

Unit6 图

1. 邻接矩阵的构建和深度遍历

代码

//无向表权值为一#include <iostream>
typedef char VertexType;   
typedef int EdgeType;
#define MAXVEX 100
#define INFINITY 65535
using namespace std;
int visited[100];//构建顶点表
typedef struct {VertexType vexs[MAXVEX];        //顶点数组EdgeType arc[MAXVEX][MAXVEX];   //边的矩阵表示int numVertexes, numEdges;      //图中当前的顶点数和边数
}MGraph;//创建邻接矩阵
void CreatMgraph(MGraph* G) {int i, j, k, w;cout << "输入顶点数和边数:" << endl;cin >> G->numVertexes >> G->numEdges;for (i = 0;i < G->numVertexes;i++) {cout << "请输入顶点名:" << endl;cin >> G->vexs[i];}//初始化邻接矩阵for (i = 0;i < G->numVertexes;i++) {for (j = 0;j < G->numVertexes;j++) {G->arc[i][j] = INFINITY;}}//构建邻接矩阵for (k = 0;k < G->numEdges;k++) {cout << "输入边(vi,vj)上的下标i,下标j和权w:" << endl;cin >> i >> j >> w ;G->arc[i][j] = w;G->arc[j][i] = G->arc[i][j];}
}//深度遍历算法
void DFS(MGraph G, int i) {int j;visited[i] = true;       //标志位数组cout << G.vexs[i];for (j = 0;j < G.numVertexes;j++) {if (G.arc[i][j] == 1 && !visited[j]) {DFS(G, j);       //递归算法}}
}//邻接矩阵的深度遍历
void DFSTraverse(MGraph G) {int i;for (i = 0;i < G.numVertexes;i++) {visited[i] = false;         //初始化标志位数组}for (i = 0;i < G.numVertexes;i++) {if (!visited[i]) {DFS(G, i);}}
}int main() {MGraph* grap = (MGraph*)malloc(sizeof(MGraph));	CreatMgraph(grap);DFSTraverse(*grap);free(grap);return 0;
}

运行结果

在这里插入图片描述在这里插入图片描述


http://www.ngui.cc/el/3458402.html

相关文章

大话数据结构之图-邻接表DFS(C++)

大话数据结构 Unit6 图 2.邻接表的构建和深度遍历 代码 #include <iostream> typedef char VertexType; typedef int EdgeType; #define MAXVEX 100 #define INFINITY 65535 using namespace std; int visited[100];//边表结点 typedef struct EdgeNode {int adjvex;…

大话数据结构之图-邻接矩阵BFS(C++)

大话数据结构 Unit6 图 1. 邻接矩阵的构建和广度遍历 代码 //无向表权值为一#include <iostream> #include <algorithm> #include <queue> typedef char VertexType; typedef int EdgeType; #define MAXVEX 100 #define INFINITY 65535 using namespace …

大话数据结构之图-邻接表BFS(C++)

大话数据结构 Unit6 图 2.邻接表的构建和广度遍历 代码 #include <iostream> #include <queue> #include <algorithm> typedef char VertexType; typedef int EdgeType; #define MAXVEX 100 #define INFINITY 65535 using namespace std; int visited[10…

大话数据结构之图-邻接矩阵最小生成树Prim(C++)

大话数据结构 Unit6 图 关于邻接矩阵的最小生成树PRIM算法 代码 #include <iostream> typedef char VertexType; typedef int EdgeType; #define MAXVEX 100 #define INFINITY 65535 using namespace std; int visited[100];//构建顶点表 typedef struct {VertexType…

大话数据结构之图-邻接矩阵最小生成树Kruskal算法(C++)

大话数据结构 Unit6 图 邻接矩阵的最小生成树Kruskal算法 代码 #include <iostream> typedef char VertexType; typedef int EdgeType; #define MAXVEX 100 #define MAXEDGE 10 #define INFINITY 65535 using namespace std; int visited[100];//构建顶点表 typedef …

大话数据结构之图-邻接矩阵最短路径Dijkstra(C++)

大话数据结构 Unit6 图 邻接矩阵的最短路径Dijkstra算法 代码 #include <iostream> typedef char VertexType; typedef int EdgeType; #define MAXVEX 100 #define INFINITY 65535 using namespace std; int visited[100]; #define MAXVEX 9 #define INFINITY 65535 …

大话数据结构之图-邻接矩阵最短路径Floyd(C++)

大话数据结构 Unit6 图 邻接矩阵的最短路径Floyd算法 代码 #include <iostream> typedef char VertexType; typedef int EdgeType; #define MAXVEX 10 #define INFINITY 65535 using namespace std; int visited[100]; typedef int Pathmatirx[MAXVEX][MAXVEX]; type…

信号的时域特征分析matlab程序

%信号的时域特征分析 Nlength(x); tlinspace(0,1,8192); %时域图 figure;plot(t,x);xlabel(‘Time’);ylabel(‘Amplitude’);title(‘时域图’) %信号的平均值 Xmeansum(x)/N %信号的有效值 Xrmssqrt(sum(x.^2)/N) %信号的方根幅值 Xr(sum(abs(x))/N)^2 %信号的绝对平均幅值 a…

4阶经典龙格库塔格式

%用途&#xff1a;4阶经典龙格库塔格式解常微分方程组y’f(x,y),y(x0)y0 %格式&#xff1a;[x,y]marunge4s(dyfun,xspan,y0,h) %dyfun为向量函数f(x,y),xspan为求解区间[x0,xn], %init为初值向量&#xff0c;N为步数&#xff0c;x返回节点&#xff0c;y返回数值解向量 function…

什么是格式良好的XML文件

格式良好的XML是遵循所有“XML文档规则”的XML文档&#xff0c;如下所列。这些规则规定了标记如何置于内容周围&#xff0c;如何按层次嵌套元素&#xff0c;如何为属性加标点以及怎样的元素名称是可接受的。XML文档规则创建XML文档时&#xff0c;必须遵循一些基本的指导原则&am…