美文网首页
73_图的存储结构(下)

73_图的存储结构(下)

作者: 编程半岛 | 来源:发表于2018-07-30 18:58 被阅读8次

关键词:邻接链表法、

0. 邻接矩阵法中残留问题

MatrixGraph无法动态添加/删除顶点

1. 基本思想

为了进一步提高空间使用率,可以考虑使用链表替换数组,将邻接矩阵变换为邻接链表

2. 邻接链表法

  • 图中的所有顶点按照编号存储于同一个链表中
  • 每一个顶点对应一个链表,用于存储始发于该顶点的边
  • 每一条边的信息包含:起点,终点,权值


    邻接链表法示意图
    邻接链表法示例
    ListGraph继承关系图
  • 边数据类型的设计
struct Edge :  public Object
{
  int b;    // 起始顶点
  int e;    // 邻接顶点
  E data;    // 权值
  // ...
};
  • 顶点数据类型的设计
struct Vertex : public Object
{
  V* data;    // 顶点数据元素值
  LinkList<Edge> edge;  // 邻接于该顶点的边
  // ...
}
  • 动态增加/删除顶点:
    int addVertex():增加新的顶点,返回顶点编号
    int addVertex(const V& value):增加新顶点的同时附加数据元素
    void removeVertex():删除最近增加的顶点

ListGraph.h

3. 小结

  • 邻接链表法使用链表对图相关的数据进行存储
  • 每一个顶点关联一个链表,用于存储边相关的数据
  • 所有顶点按照编号被组织在同一个链表中
  • 邻接链表法实现的图能够支持动态添加/删除顶点

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

相关文章

  • 73_图的存储结构(下)

    关键词:邻接链表法、 0. 邻接矩阵法中残留问题 MatrixGraph无法动态添加/删除顶点 1. 基本思想 为...

  • 基础知识

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

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

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

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

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

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

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

  • 图-存储结构

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

  • 图的存储结构

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

  • 图的存储结构

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

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

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

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

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

网友评论

      本文标题:73_图的存储结构(下)

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