如上图,我们能够把v0标记为0,v1标记为1。。。。

并把联通的2点权值全设置为1,那么能够用邻接矩阵(右图)来表示

概念解析:

第一个邻接顶点:

我们以vo为例,第一个邻接顶点为V1(事实上也能够使V3,仅仅只是考虑计算机的存储顺序。我们找邻接顶点,通常是从v0扫描到v3,所以我们先在内存中扫描到v1)

下一个邻接顶点:

我们以v0为例。下一个邻接顶点就是v3(相同。事实上也能够使V1,仅仅只是考虑计算机的存储顺序。我们找下个邻接顶点,通常是从v2扫描到v3,之所以从v2扫描起,那是由于,V1已经是第一个邻接顶点了。那么下一个邻接顶点一定是在内存中存储在V1后的数据了)

无向图邻接矩阵的特点:

对角线权值是0

无向图矩阵关于斜线对称(有向图不正确称)

代码例如以下:

#include<iostream>
using namespace std;
#define VertexSize 10
typedef struct
{int weight[VertexSize][VertexSize];  //表示2个顶点之间的权值int edgenum; //表示图的边数目
}Graph;//初始化图
void Initiate_Graph(Graph *g,int n)
{int i,j;g->edgenum=0;for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==j) g->weight[i][j]=0;  //对角线表示顶点自己到自己。权值为0else g->weight[i][j]=0x7fff; //其它权值初始化为无限大}
}//插入边
void InsertEdge(Graph *g,int v,int w,int weight,int n)
{if(v<0 || v>=n||w<0||w>=n){cout<<"overflow!"<<endl;}g->weight[v][w]=weight;g->edgenum++;
}//取得点V的第一个临接顶点
int GetFirstVertex(Graph *g,int v,int n)
{if(v<0||v>=n){cout<<"overflow"<<endl;return -1;}int i;for(i=0;i<n;i++){if(( (g->weight[v][i])>0 )&&( (g->weight[v][i])<0x7fff) )return i;}return -1;}//取得顶v的下一个邻接顶点
int GetNextVertex(Graph *g,int v,int w,int n)
{if(v<0||v>=n||w<0||w>=n){cout<<"overflow"<<endl;return -1;}int i;for(i=w+1;i<n;i++){if( ((g->weight[v][i])>0 )&& ((g->weight[v][i])<0x7fff ))return  i;}return -1;
}//删除边
void DeleteEdge(Graph *g,int v,int w,int n)
{if(v<0||v>=n||w<0||w>=n||v==w){cout<<"error"<<endl;}g->weight[v][w]=0x7fff;g->edgenum--;
}void PrintGraph(Graph *g,int n)
{int y,x,i;for(i=0;i<n;i++){y=GetFirstVertex(g,i,n);if(y==-1){cout<<"Vertex:"<<i<<"没有第一个邻接顶点"<<endl;}else{cout<<"Vertex:"<<i<<"第一个邻接顶点"<<y<<endl;x=GetNextVertex(g,i,y,n);if(x!=-1){cout<<"Vertex:"<<i<<"下一个邻接顶点"<<x<<endl;}else{cout<<"Vertex:"<<i<<"没有第二个邻接顶点"<<endl;}}}
}void main()
{Graph g;int n,edge;cout<<"请输入图的顶点个数:"<<endl;cin>>n;cout<<"请输入图的边个数"<<endl;cin>>edge;Initiate_Graph(&g,n);int i,p1,p2,weight;cout<<"请输入顶点-顶点-权值:"<<endl;for(i=0;i<edge;i++){cin>>p1>>p2>>weight;InsertEdge(&g,p1,p2,weight,n);}PrintGraph(&g,n);cout<<"输入须要删除的边:"<<endl;int e1,e2;cin>>e1>>e2;DeleteEdge(&g,e1,e2,n);cout<<"删除后边的数目为:"<<g.edgenum<<endl;system("pause");
}

图的邻接矩阵存储结构相关推荐

  1. 图的数组(邻接矩阵)存储结构

    图是比较复杂的数据结构,它由顶点和顶点之间的弧或边组成.任何两个顶点之间都 可能存在弧或边.在计算机存储图时,只要能表示出顶点的个数及每个顶点的特征.每对 顶点之间是否存在弧(边)及弧(边)的特征,就 ...

  2. 数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding

    邻接矩阵 试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc,相关定义如下: typedef int VertexType;type ...

  3. 图的邻接矩阵存储和邻接表存储定义方法

    一.邻接矩阵 #include <iostream> using namespace std; #define MaxVertexNum 100 //顶点最大数目//邻接矩阵存储结构 ty ...

  4. 图的邻接矩阵存储(简单代码实现)

    说起来邻接矩阵,对于学过线性代数的同学理解起来非常简单 其实就是一个数字组成方阵,每一个数字都能有有意义的代表一些信息. 下面来看一个例子 如上图所示的图,使用邻接矩阵存储的话应该是下面的情况 由此可 ...

  5. 图解图库JanusGraph系列-一文知晓“图数据“底层存储结构(JanusGraph data model)

    图解图库JanusGraph系列-一文知晓"图数据"底层存储结构(JanusGraph data model) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新 图数据 ...

  6. 图的常见存储结构及各自的优缺点

    以下说法均建立在简单图上,即无环无重复边的图. 本文将介绍图的常见存储结构及各自的优缺点 邻接矩阵 邻接表 十字链表 邻接多重表 边集数组 邻接矩阵 用两个数组来表示图:一个一维数组存储图中顶点信息, ...

  7. 图的邻接矩阵存储及遍历操作

    第1关:图的邻接矩阵存储及求邻接点操作 任务描述 本关任务:要求从文件输入顶点和边数据,包括顶点信息.边.权值等,编写程序实现以下功能. 1)构造无向网G的邻接矩阵和顶点集,即图的存储结构为邻接矩阵. ...

  8. java对象底层原存储结构图解_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构...

    大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 转载文章请保留以下声明: 一:存储模式 留言或私信我,邀请你加入"图数据库交流"微信群! 1. ...

  9. janusgraph整合mysql_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构

    527-7.jpg 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 版本:JanusGraph-0.5.2 转载文章请保留以下声明: 一:存储模式 留言或私信我, ...

最新文章

  1. mysql团队开发工具_最棒的10款MySQL GUI工具
  2. javaScript(1):基础部分
  3. 20170706xlVBA城中村改造汇总
  4. MongoDB limit 选取 skip跳过 sort排序 方法
  5. 12月10日习题答案大剖析!小伙伴们再接再厉
  6. Logistic Regression逻辑回归的损失函数与梯度下降训练
  7. RSA加密、解密、签名、校验签名
  8. MBProgressHUD的基本使用
  9. 《Microsoft SQL Server入门教程》第01篇 SQL Server 简介
  10. 计算机主机箱组装示意图,电脑主机组装图解
  11. 张钹院士:迈向第三代人工智能 |论文学习总结
  12. 电脑上怎么压缩GIF动图?简单好用的压缩工具分享给你
  13. Django测试开发平台搭建
  14. stopstart按钮怎么用_汽车Start-Stop启停技术简明讲解
  15. java.lang.ClassNotFoundException: sun . jdbc . odbc . JdbcOdbcDriver
  16. 划重点 iOS15正式发布, 全新的通知推送系统,你必须要知道
  17. python3抓取杭州房价信息
  18. Syslog服务器配置和日志转发
  19. 浪漫故事:常见HTTP状态码的另类解析
  20. 从0开始制作小游戏(一)

热门文章

  1. 虚拟机+ubuntu 图形界面和终端界面的切换
  2. sed替换每行最后一个字符
  3. iPhone 7 256GB版停售原因分析
  4. ImageMagick远程代码执行漏洞CVE-2016-8707 绿盟科技发布安全威胁通告
  5. python学习笔记之运算符
  6. 养成良好的学习习惯-浅谈学习方法(1)
  7. 提取Windows用户密钥文件cachedump
  8. PHPStorm+XDebug进行调试
  9. 显示一些整数的最大公因子
  10. WIN8.1 PRO RTM VOL.2013.09.18