美文网首页
72_图的存储结构(上)

72_图的存储结构(上)

作者: 编程半岛 | 来源:发表于2018-07-29 16:42 被阅读6次

关键词:邻接矩阵法的设计与实现

0. 基本思想

  • 用一维数组存储顶点:描述顶点相关的数据
  • 用二维数组存储边:描述顶点间的关系和权

1. 邻接矩阵法

设图A = (V, E)是一个有n个顶点的图, 图的邻接矩阵为Edge[n][n],则:

注意:

  • 解决工程问题时,习惯于对图中的每个顶点进行编号
  • 当不需要权值时,取W为非空表示结点间有连接

2. 设计与实现

邻接矩阵法的继承关系图

问题:如何具体表示顶点集数组?如何具体表示边集数组?

实现方式一:直接使用数组表示顶点集和边集

问题:

  • 构造效率低下:图对象初始化时,频繁调用顶点类型和边类型的构造函数
  • 空间使用率低下:图对象占用大量空间,而大多数空间处于闲置状态
  • 无法表示空值:无法用统一的方式表示边为空的情形
实现方式二:使用指针数组表示顶点集和边集

问题的解决:

  • 构造效率:初始化图像时,只需要将数组元素赋值为空
  • 空间使用率:顶点数据元素和边数据元素在需要时动态创建
  • 空值的表示:任意的顶点类型和边类型都是用NULL表示空值

MatrixGraph.h

3. 小结

  • 邻接矩阵法使用数组对图相关的数据进行存储
  • 一维数组存储顶点相关的数据(空表示无相关数据)
  • 二维数组存储边相关的数据(空表示顶点间无数据)
  • 代码实现时使用指针数组进行数据的存储(提高效率)

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

相关文章

  • 72_图的存储结构(上)

    关键词:邻接矩阵法的设计与实现 0. 基本思想 用一维数组存储顶点:描述顶点相关的数据 用二维数组存储边:描述顶点...

  • 基础知识

    1.数据结构的分类 逻辑结构:集合结构,线性结构,树形结构,图结构 物理结构:顺序存储,链式存储,索引存储,散列存...

  • 基本数据结构底层原理和总结

    基本数据结构解析 逻辑结构分为:集合,线性,树,图。存储结构分为:线性存储,链式存储,索引存储,has存储。 数组...

  • [图]图和图遍历(BFS和DFS)(一)

    1. 图的存储结构 常见的图存储结构主要分为邻接矩阵和邻接表两种。 1.1 图的邻接矩阵表示: 图结构: 图的创建...

  • 图的理解:存储结构与邻接表的Java实现

    存储结构 要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值。常用的图的存储结构主要有以...

  • 图-存储结构

    怎么存一个图是由设计者自己想出来的。举两个例子而已,真正的如何存一个图,是根据实际问题来决定的。 图有两个要素: ...

  • 图的存储结构

    邻接矩阵邻接表 存储顶点(LeetCode是这样)

  • 图的存储结构

    线性表是一对一的关系,可以用数组或链表均可简单存放。 树结构是一堆多的关系,可以用数组和链表的特性结合; 邻接矩阵...

  • 图论(二)图的存储结构

    前言 图的存储结构除了要存储图中的各个顶点本身的信息之外,还要存储顶点与顶点之间的关系,因此,图的结构也比较复杂。...

  • 算法与数据结构二、HashMap深度剖析

    概述 我们知道,数据结构的物理存储结构只有两种:顺序存储结构和链式存储结构,像栈、队列、树、图等一系列结构都是基于...

网友评论

      本文标题:72_图的存储结构(上)

      本文链接:https://www.haomeiwen.com/subject/lqbzmftx.html