9.2图的存储结构 9.2.1 邻接矩阵存储方法
2013-05-02 21:54
204 查看
9.2.1 邻接矩阵存储方法
邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n(n>0)个顶点的图,顶点的顺序依次为(vo,v1,...,vn-1),则G的邻接矩阵A是n阶方阵,其定义如下:(1)如果G是无向图,则:
(2)如果G是有向图,则:
(3)如果G是带权无向图,则:
或表示为:
(4)如果G是带权有向图,则:
或表示为:
邻接矩阵的特点如下:
图的邻接矩阵表示是唯一的
无向图的邻接矩阵一定是一个对称矩阵。因此,按照压缩存储的思想,在具体存放邻接矩阵时只需存放上(或下)三角形阵的元素即可。
不带权的有向图的邻接矩阵一般来说是一个稀疏矩阵,因此,当图的顶点较多时,可以采用三元组表的方法存储邻接矩阵。
对于无向图,邻接矩阵的第i行(或第i列)非零元素(或非
元素)的个数正好是第i个顶点vi的度。
对于有向图,邻接矩阵的第i行(或第i列)非零元素(或非
)元素的个数正好是第i个顶点vi的出度(或入度)。
用邻接矩阵方法存储图,很容易确定图中任意两个顶点之间是否有边相连。但是,要确定图中有多少条边,则必须按行、按列对每个元素进行检测,所花费的时间代价很大。这是用邻接矩阵存储图的局限性。
邻接矩阵的数据类型定义如下:
#define MAXV <最大顶点个数> /*在后面的类型定义中都使用到本宏定义*/ #define InfoType int typedef struct { int no; /*顶点编号*/ InfoType info; /*顶点其他信息*/ }VertexType; /*顶点类型*/ typedef struct /*图的定义*/ { int edges[MAXV][MAXV]; /*邻接矩阵*/ int n,e; /*顶点数,弧数*/ VertexType vexs[MAXV]; /*存放顶点信息*/ }MGraph; int returnInt(int i){ return i; }
相关文章推荐
- 数据结构之图的邻接矩阵存储方法
- 图的存储结构(邻接矩阵)- 数据结构和算法56
- Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
- 【数据结构】图的存储方式:邻接矩阵和邻接表
- 数据结构—图的存储—邻接表和邻接矩阵
- 图的存储结构——邻接矩阵(算法简介/c++实现)
- 16 - 12 - 26 图的存储结构-邻接矩阵、邻接表、十字链表
- ext2 文件系统结构与目录文件及常规文件存储方法
- 【数据结构】图的存储--邻接矩阵
- 图的存储结构(邻接矩阵)
- 图的存储结构(邻接矩阵)
- Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
- 2141 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(方法2)
- 【数据结构】图的存储方式:邻接矩阵和邻接表
- 数据结构之(图存储结构之)邻接矩阵
- c++ 实现图的存储结构—邻接矩阵
- 图的存储结构(邻接矩阵)- 数据结构和算法56
- 邻接矩阵作为主要存储结构
- 图的理解:存储结构与邻接矩阵
- 【数据结构】图的存储方式:邻接矩阵和邻接表