• 图的高siao存储结构——链式前向星


    假期训练题好多啊,都没时间写博客了。。

    (其实就是懒)

    前几天jieba开了图论,好多新东西,一脸懵逼。。。

    讲到链式前向星的时候还以为是星打错了,之后才具体了解。

    现在会使用的图的存储方式有三种

    1、邻接矩阵

    对于数据不大的图,用这个方法存比较简明。开一个a【n】【n】的数组,可以记录联通情况或者权值(如果有权值的话)

    2、邻接表

    对于每个节点i,开一个vector用来存储以其为顶点或者起始点的边(可以是结构体,用来存权值,终点等信息)

    具体代码:

    vector<bian> ljb[n];
    
    //插入边时:
    bian tem(b)//构造
    ljb[a].push_back(tem);

    3、链式前向星

    
    

    struct node//这个是边的结构体
    {
    int to;//记录这条边的中点
    int w;//权值
    int next; //当前顶点所对应的下一条边
    };

    
    

    node bian[80010];
    int head[80010];/*用来存储每个顶点的第一条边在bian数组中的位置,初始化 为-1,若head[i]==-1,说明没有以顶点i为起点的边*/

    
    


    //更新前向星的函数:
    int p=0;//用来记边数的全局变量
    void add(int u,int v,int w)//起点为u,终点为v,权值为w
    {
    bian[p].to=v;
    bian[p].w=w;
    bian[p].next=head[u];
    head[u]=p++;/*在更新时是倒着更新的,所以最后遍历的顺序是从后往前*/
    }

    //遍历整个图时的代码:
    for(int i=1;i<=n;i++)
    {
        for(int j=head[i];j!=-1;j=bian[j].next)
           {......}
          //以i为起点,以bian[j].to为终点的边
      
    }

    把自己这几天的收获写在这里,方便加深一下印象。假期一半还没过去,不能松懈啊!

    此地非逐弃者之王座,彼方乃行愿者之归所。无限清澈,星界银波。
  • 相关阅读:
    Oracle Dataguard原理
    [转]TOKUDB® VS. INNODB FLASH MEMORY
    [转]什么是简约设计
    [转]DAS、NAS、SAN存储系统分析
    [转]ocp|ocm考证系列文章!
    [转]数据库范式的设计
    Block Media Recovery, BMR
    [转]开启闪回以及闪回的四种原理
    [转]Oracle DB 执行表空间时间点恢复
    Losing All Members of an Online Redo Log Group
  • 原文地址:https://www.cnblogs.com/brotherHaiNo1/p/7267792.html
Copyright © 2020-2023  润新知