当前位置: 首页 > news >正文

沧州河间疫情最新消息今天关键词点击优化工具

沧州河间疫情最新消息今天,关键词点击优化工具,南昌网站建设报价单,网站建设军成目录 基本要求: 图的结构体: 图的构造: 图的深度优先(DFS): 图的打印输出: 完整代码: 测试数据: 运行结果: 通过给出的图的顶点和边的信息&#xff0c…

     

目录

基本要求:

图的结构体:

图的构造:

图的深度优先(DFS):

图的打印输出:

完整代码:

测试数据:

 运行结果:

     通过给出的图的顶点和边的信息,构建无向图的邻接矩阵存储结构。在此基础上,从A顶点开始,对无向图进行深度优先遍历,输出遍历序列。

基本要求:

(1)从测试数据读入顶点和边信息,建立无向图邻接矩阵存储结构;

(2)把构建好的矩阵输入显示;

(3)从A顶点开始,编写DFS深度优先遍历算法;

(4)输出深度优先遍历序列。

图的结构体:

typedef char Vertextype;//顶点数据类型
typedef int Arctype;//边权值类型
typedef struct
{Vertextype vexs[mvnum];//顶点表Arctype arcs[mvnum][mvnum];//邻接矩阵int vexnum, arcnum;//当前图的点数和边数
}AMGraph;

图的构造:

bool Creategraph(AMGraph& G)
{cin >> G.vexnum >> G.arcnum;//输入总顶点数,总边数for (int i = 0; i < G.vexnum; i++){cin >> G.vexs[i];//依次输入点的信息mp[G.vexs[i]]=0;//辅助数组,是否访问过该点,0表示没访问过}for (int i = 0; i < G.vexnum; i++)//初始化邻接矩阵for (int j = 0; j < G.vexnum; j++)G.arcs[i][j] = 0;for (int k = 0; k < G.arcnum; k++)//构造邻接矩阵{Vertextype v1, v2;int w;cin >> v1 >> v2;//输入一条边的顶点及边的权值int i = Locatevex(G, v1);int j = Locatevex(G, v2);//确定v1和v2在G中的位置G.arcs[i][j] = 1;//边<v1,v2>的权值置为wG.arcs[j][i] = G.arcs[i][j];//无向图是对称图}return 1;
}

图的深度优先(DFS):

void DFS(AMGraph& G,Vertextype v)
{cout << v<<" ";mp[v] = 1;for (int i = 0; i < G.vexnum; i++){int a = Locatevex(G, v);if (v == G.vexs[i])continue;else{if (G.arcs[a][i] == 1 && !mp[G.vexs[i]])//是邻边且没访问过DFS(G, G.vexs[i]);}}
}

图的打印输出:

void Print(AMGraph G)
{cout << "邻接矩阵:" << endl;for (int i = 0; i < G.vexnum; i++){for (int j = 0; j < G.vexnum; j++)cout << G.arcs[i][j] << " ";cout << endl;}
}

完整代码:

#include<iostream>//无向图邻接矩阵
#include<map>
#define mvnum 100
using namespace std;
typedef char Vertextype;//顶点数据类型
typedef int Arctype;//边权值类型
map<Vertextype, int> mp;
typedef struct
{Vertextype vexs[mvnum];//顶点表Arctype arcs[mvnum][mvnum];//邻接矩阵int vexnum, arcnum;//当前图的点数和边数
}AMGraph;
int Locatevex(AMGraph G, Vertextype u)//在G图中查找顶点u,存在则返回顶点表中的下标,否则返回-1
{for (int i = 0; i < G.vexnum; i++)if (u == G.vexs[i]) return i;return -1;
}
bool Creategraph(AMGraph& G)
{cin >> G.vexnum >> G.arcnum;//输入总顶点数,总边数for (int i = 0; i < G.vexnum; i++){cin >> G.vexs[i];//依次输入点的信息mp[G.vexs[i]]=0;//辅助数组,是否访问过该点,0表示没访问过}for (int i = 0; i < G.vexnum; i++)//初始化邻接矩阵for (int j = 0; j < G.vexnum; j++)G.arcs[i][j] = 0;for (int k = 0; k < G.arcnum; k++)//构造邻接矩阵{Vertextype v1, v2;int w;cin >> v1 >> v2;//输入一条边的顶点及边的权值int i = Locatevex(G, v1);int j = Locatevex(G, v2);//确定v1和v2在G中的位置G.arcs[i][j] = 1;//边<v1,v2>的权值置为wG.arcs[j][i] = G.arcs[i][j];//无向图是对称图}return 1;
}
void DFS(AMGraph& G,Vertextype v)
{cout << v<<" ";mp[v] = 1;for (int i = 0; i < G.vexnum; i++){int a = Locatevex(G, v);if (v == G.vexs[i])continue;else{if (G.arcs[a][i] == 1 && !mp[G.vexs[i]])//是邻边且没访问过DFS(G, G.vexs[i]);}}
}
void Print(AMGraph G)
{cout << "邻接矩阵:" << endl;for (int i = 0; i < G.vexnum; i++){for (int j = 0; j < G.vexnum; j++)cout << G.arcs[i][j] << " ";cout << endl;}
}
int main()
{AMGraph G;Creategraph(G);Print(G);cout << "DFS序列:";DFS(G, 'A');//从A开始遍历
}

测试数据:

12 16

A B C D E F G H I J K L

A D

B C

B D

B F

C F

D G

E B

E F

E G

E H

F I

G K

H I

I K

J K

K L

测试数据说明:

1.第一行两个整数分别表示无向图中的顶点数m和边数n;

2.第二行中的m个整数,表示m个顶点数据元素(数据类型为字符型;

3.从第三行开始连续n行数据,每一行两个字符表示无向图中的一条边关联的两个顶点数据信息。

4.无向图如下图示:

 运行结果:

http://www.ds6.com.cn/news/84380.html

相关文章:

  • 做弩的网站seo诊断a5
  • 大连模板网站制作公司电话app关键词排名优化
  • WordPress缩略图太模糊谷歌seo一个月费用需要2万吗
  • 怎么免费建网站推广普通话手抄报内容简短
  • 做网站用百度地图和天地图成都seo工程师
  • 优秀个人网站主页seo企业优化方案
  • 微网站制作速成法百度识图官网
  • 网站建站平台源码app软件开发
  • 定州网站建设公司网络推广经验
  • 如何注册一家网站建设公司深圳最新消息今天
  • 济南网站开发公司手把手教你优化网站
  • 搭建微擎网站后怎么做微官网最近一周的新闻热点事件
  • 个人域名 企业网站备案深圳全网营销系统
  • 万网 成品网站seoyoon
  • 做外贸要自己建网站吗深圳网页设计公司
  • 阿里云虚拟主机可以做几个网站吗竞价推广工作内容
  • php网站开发经理招聘哈尔滨关键词排名工具
  • 广州做网站怎么样百度高级搜索
  • 棋牌网站建设要多少钱长沙网红奶茶
  • 贵州网站建设seo优化58同城推广
  • 微网站制作怎么建立网站快捷方式
  • 郴州市宜章网站建设成都推广系统
  • 临沂做外贸网站的公司seo技术培训宁波
  • 正阳县网站建设产品推广营销
  • 日本人在床上做裸身体网站啊惠州seo优化
  • 哈尔滨建站系统报价做百度推广需要什么条件
  • 婚庆公司有哪些服务项目seo研究中心好客站
  • 网站建站需要什么谷歌商店安卓版下载
  • 网页制作与网站建设 论文外包公司为什么没人去
  • 如何制作网站效果图深圳seo优化排名公司