• 大话数据结构 -07-1 图的定义、抽象数据类型与存储结构


    1. 定义

    在图结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。

    2. 与线性表、树结构的区别

    3. 相关定义

    (1)无向、有向

    与图边或者弧相关的数字叫做权(Weight),带权的图通常称为网(Network)

     

    (2) 图的顶点与边间的关系

    无向图:

    边数等于各顶点度数和的一半(因为重复两次计数)

     有向图:

     

    注意:

    【1】图中顶点与顶点之间的路径并不是唯一的

    【2】

    【3】

    (3)连通图相关术语

    1无向连通图

    【2】连通分量

    注意这里极大的含义,是指能连通的最大结点。非连通图也可能含有连通分量!!

     

    此:图1有两个连通分量(图2与图3),图3满足极大顶点数(没有顶点能再与其连接),图4不满足极大定点数(还有D能与其相连)

     【3】有向图(每一对顶点)

    怎么理解??

    【4】连通图的生成树

    但是n-1条边并不一定是生成树

    4. 图的抽象数据类型

    5. 图的存储结构(共有五种不同的存储结构)

    (1)邻接矩阵

     

    【1】无向图

    注意:矩阵主对角线的值全为0,因为不存在顶点到自身的 边

              无向图的边数组是一个对称矩阵(以从左上角到右下角的主对角线为轴)

    规律:

    【2】有向图

     

    【3】网

    代码实现

     

    创建网

    缺点:对于边数相对于顶点较少的图,该结构存在对存储空间的极大浪费

    (2)邻接表

     

    【1】无向图

    【2】有向图

    容易得到每个顶点的出度。

    有时为了确定顶点的入度或以顶点为弧头的弧,可以建立一个有向图的逆邻接表。

    【3】带权重的网图

    【4】实现代码:

    结点定义代码

     

    无向图邻接表创建

    代码中使用了头插法

    对于无向图:

    缺点:

    (3)十字链表(适用于有向图)

     

    (4)邻接多重表(无向图)

     

    具体实现:

    邻接多重表与邻接表的差别,仅仅是在于同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点。

    (5)边集数组

  • 相关阅读:
    python高阶函数filter
    python的生成器与yield
    python返回多个参数
    第一冲刺阶段工作总结09
    第一冲刺阶段工作总结08
    第一冲刺阶段工作总结07
    第一冲刺阶段工作总结06
    第八周学习进度表
    微软拼音简捷关于人机交互设计的相关评价
    第一冲刺阶段工作总结05
  • 原文地址:https://www.cnblogs.com/GuoXinxin/p/10153049.html
Copyright © 2020-2023  润新知