• 数据结构:邻接表


    之前我看了很久都没有搞明白邻接表,现在终于差不多搞懂了,特此记录。

    那么,邻接表是什么呢?邻接表嘛,就是邻接的表。

    其实邻接表不好理解,主要是开的数组比较多,容易弄混,这一分钟好像弄懂了,下一分钟就不知如何下手了。

    那么接下来:

    每一个数组的作用

    head[点的序号] = 从它出发的最后一次输入的边的编号
    from[边的序号] = 边的起点;
    to[边的序号] = 边的终点;
    nxt[边的序号] = 输入的上一个从这条边的出发点出发的边的编号;
    edge[边的序号] = 边的权值
    

    ATTENTION!

    1. next是保留字!
    2. 当然也可以使用结构体。
    3. 其中除了head[],数组的下标全部都是边而不是点!
    4. from[]to[]分别是起点和终点(经常可以不用from[]);
    5. 有的书上的ver[](如《算法竞赛进阶指南》)就是这里的to[]。

    add()函数

    使用邻接表存图的时候,用到的add()函数:

    void add(int x, int y, int z) {
        to[++tot] = y, edge[tot] = z; //edge为边的权值,可视情况而用
        nxt[tot] = head[x], head[x] = tot;
    }
    

    好好理解一下,反正我一开始就是卡在“每一个数组的作用”这里。

  • 相关阅读:
    CC2540-BLE4.0 学历笔记1之串口体验
    cc2530的PWM实现
    用qt写的一个简单到不能在简单的上位机
    在Kubuntu14.04中安装小企鹅输入法
    初始化umi项目
    工具杂记(三) -- zookeeper
    工具杂记(二) -- Centos7
    工具杂记(一) -- vagrant
    (一)Docker导学
    JVM随笔(二)之搜索类
  • 原文地址:https://www.cnblogs.com/g-mph/p/14634412.html
Copyright © 2020-2023  润新知