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

成都创新互联网站建设百度权重查询网站

成都创新互联网站建设,百度权重查询网站,文字图片在线生成器,sns社交网站 有哪些引言#xff1a; 建图#xff0c;将图放进内存的方法 常用的建图方式#xff1a;邻接矩阵#xff0c;邻接链表#xff0c;链式前向星 一、邻接矩阵 通过一个二维数组即可将图建立#xff0c;邻接矩阵#xff0c;考虑节点集合 #xff0c;用一个二维数组定义邻接矩…引言 建图将图放进内存的方法 常用的建图方式邻接矩阵邻接链表链式前向星     一、邻接矩阵 通过一个二维数组即可将图建立邻接矩阵考虑节点集合  用一个二维数组定义邻接矩阵满足以下 对于一个简单的有向图或无向图邻接矩阵如下 无向图若 u 与 v 之间存在一条边则 A[u][v]A[v][u]1 两个方向 有向图若有一条 u 指向 v 的边则 A[u][v]1若有一条 v 指向 u 的边则 A[v][u]1单向 邻接矩阵的空间消耗为无向图的邻接矩阵为对称矩阵。在某些情况下只存储邻接矩阵的对角线及以上的部分这样图占用的存储空间可以减少一半。 二、邻接链表vector建表 为一个包含 V 条链表的数组每个节点有一个链表对于每个节点u∈V邻接链表Adj[u]包含所有与节点u之间有边相连的节点v。 如果G是一个有向图则对于边uv而言节点 v 将出现在链表 Adj [ u ]里所有邻接链表的长度之和等于 E如果G是一个无向图对于边节点将出现在链表 Adj [ u ] 里节点 u 将出现在链表 Adj [ v ]里所有邻接链表的长度之和为 2*E。 对一个有向图通过vector建图 建图过程  用结构体 node 存储两个数据终点编号边权值建立 node 型的 vector 动态数组。建图也只需要将 结构体 直接插入 vector动态数组 末端即可。 typedef struct Node{int v; //终点编号int w; //起点到终点的边权 }Node; vectorNode map[201]; //用 vector 建立不是严格意义上的链表 void get_map(int m) {for(int i1;im;i){int u,v,w;scanf(%d%d%d,u,v,w);Node tmp;tmp.vv;tmp.ww;map[u].push_back(tmp); //将 终点节点v 和 边权w 加入 节点u 的链表末尾tmp.vu;tmp.ww; //如果为无向图反向边map[v].push_back(tmp); // 将 将终点节点u 和边权w 加入 节点v 的链表末尾} } 邻接链表表示法的储存空间均为 OVE vector 数组建图的应用使用 最小生成树prim算法完整代码 #includestdio.h #includeiostream #includevector #includequeue #includestring.h #includestdlib.h using namespace std; struct node{int w;int v;friend bool operator(node x,node y){ return x.wy.w;} // 优先队列比较 按照w从小到大排 }; priority_queuenodeq; // 建立数据类型为node结构体的优先队列 int n,m,dis[1001],vis[1001]; vectornodemap[1001]; // 以node结构体的 vector数组 int sum0; void prim(int s) {memset(dis,0x3f,sizeof(dis)); // 初始化 memset(vis,0,sizeof(vis));dis[s]0;q.push((node){0,s});while(!q.empty()){int uq.top().v;q.pop();if(vis[u]) continue;vis[u]1;sumdis[u];for(int i0;imap[u].size();i) // vector建图的使用 {int vmap[u][i].v;int wmap[u][i].w;if(dis[v]w){dis[v]w;q.push((node){w,v});}}} } int main() {scanf(%d%d,n,m);for(int i1;im;i){int u,v,w;scanf(%d%d%d,u,v,w);node tmp; // vector 建图 tmp.vv;tmp.ww;map[u].push_back(tmp);tmp.vu; map[v].push_back(tmp); // 反向边 }prim(1);for(int i1;in;i) {if(!vis[i]) {printf(orz);return 0;}}printf(%d,sum);return 0; } 三、链式前向星 链式前向星所用结构体和相关变量建图函数 struct node{int to,next,w; }edge[2001]; int head[1001]; int cnt0; void addedge(int u,int v,int w) {edge[cnt].tov;edge[cnt].nexthead[u];edge[cnt].ww;head[u]cnt; } 初始化函数 //初始化函数 void init() {memset(head,-1,sizeof(head)); //将head数组的值全置为-1.cnt0;//初始化边的编号 } 对于一个有向图用链式前向星建图  关于结构体中 next 数组含义 某一条边的起点连接的上一个编号比它小的边。由于初始化当某条边的next值为 -1 时此条边为最后一条边。 运用链式前向星遍历图的过程 首先根据节点 u 找到以 u 为起始点的边的编号然后根据 next 找到下一条以 u 为起始点的边的编号以此类推。 以链式前向星的方法建图的最小生成树prim算法 主要代码 void addedge(int u,int v,int w) {edge[cnt].vv;edge[cnt].nexthead[u];edge[cnt].ww;head[u]cnt; } void prim(int s) {memset(dis,0x3f,sizeof(dis)); // 初始化 memset(vis,0,sizeof(vis));dis[s]0;q.push((node1){0,s});while(!q.empty()){int uq.top().v;q.pop();if(vis[u]) continue;vis[u]1;sumdis[u];for(int ihead[u];i!-1;iedge[i].next){int vedge[i].v;int wedge[i].w;if(dis[v]w){dis[v]w;q.push((node1){w,v});}}} } 四、三种方法的优缺点比较: 1.邻接矩阵 邻接矩阵通过一个二维数组直接表示两点之间的权值但是由于二维数组容易出现空间空间的浪费并且数据量大时会出现爆栈。 2. 邻接链表vector 通过STL步骤简单vector采用可变数组的方式动态变化时会耗费额外时间复制数组。 3.链式前向星 操作简单但不容易理解。
http://www.zqtcl.cn/news/304510/

相关文章:

  • 建设一个网站所需要注意的最有前途的15个专业
  • 橱柜手机网站模板软件设计说明书
  • 山西云起时网站建设wordpress 字体大小
  • 网站建设详细报价电商开发系统
  • 搜索引擎营销的主要方法开封seo推广
  • 怎么在网上找做网站的客户安徽安能建设集团网站
  • 乾安网站建设哪家专业h5在线编辑
  • 公司网站建设模块简介广17网站一起做网店
  • 外包网站多少钱柳市建设网站
  • 做外贸站推广全国网页制作大赛
  • 手机网站关键词排名微信小程序怎么做网页
  • 利用万网做网站wordpress过滤敏感
  • 大连 响应式网站制作郑州网站建设中国建设建设银行
  • 网站关键词布局关于静态网站开发相关新闻
  • 安徽新站优化网站建设哪些好
  • 网站详细页制作c2c模式的网站
  • 网站与网页之间的区别是什么意思通过微信发布诱导分享的美文或者集赞活动属于哪种网络营销方式
  • 可信网站代码想学做网站从哪里入手
  • 做公众号选择图片的网站wordpress怎么看代码
  • 个人 中小企业公司网站建设方案百度网页版链接地址
  • 青岛网站推广方案网线制作心得与体会
  • 杭州网站优化公司哈尔滨企业网站模板建站
  • 洛阳免费网站建设自己做网站最新视频教程
  • 网站备案查询 美橙网开发app需要的技术
  • 软件产品如何做网站推广昆山外贸网站建设推广
  • 景德镇市城市建设规划网站wordpress用不了了
  • 网站及新媒体建设宣传片wordpress 无法编辑主题
  • 东莞设计网站重庆做腋臭骑士网站
  • 什么软件可以搜索关键词精准网站信息优化的方式
  • 购物网站排名前十名山东泰安建筑工程集团有限公司