码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【图论C++】链式前向星(图(树)的存储)


    /**
     * @file            
     * @author          jUicE_g2R(qq:3406291309)————彬(bin-必应)
     *						一个某双流一大学通信与信息专业大二在读	
     * 
     * @brief           一直在竞赛算法学习的路上
     * 
     * @copyright       2023.9
     * @COPYRIGHT			 原创技术笔记:转载需获得博主本人同意,且需标明转载源
     * @language        C++
     * @Version         1.0还在学习中  
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • UpData Log👆 2023.9.25 更新进行中
    • Statement0🥇 一起进步
    • Statement1💯 有些描述是个人理解,可能不够标准,但能达其意

    技术提升站点

    链式前向星

    • 链式前向星 建立在 邻接表 的基础上,从 2结点 开始记录(只画了部分部分):

    • 根据 邻接表 建立 链式前向星存图

    h e a d [ u ] head[u] head[u] :记录 u节点 的 第一个邻居节点 的存储编号

    i i i :存储编号

    e d g e [ i ] . t o edge[i].to edge[i].to :u节点 的邻居节点(编号)

    e d g e [ i ] . n e x t edge[i].next edge[i].next :记录 u节点 下一个邻居节点 的存储编号

    (上图与下面的测试无关)

    模拟存储过程

    //test:手动模拟数据存储过程,假设: 存入边 2-1 2-3 2-4 2-5
    //存入2-1
    edge[0].to=1, edge[0].next=head[2]=-1, head[2]=0;
    i		0
    to		1
    next	-1
    //存入2-3
    edge[1].to=3, edge[1].next=head[2]=0, head[2]=1;
    i		0	1
    to		1	3
    next	-1	0
    //存入2-4
    edge[2].to=4, edge[2].next=head[2]=1, head[2]=2;
    i		0	1	2
    to		1	3	4
    next	-1	0	1
    //存入2-5
    edge[2].to=5, edge[3].next=head[2]=2, head[2]=3;
    i		0	1	2	3
    to		1	3	4	5
    next	-1	0	1	2
    //2结点的边存储完成,head[2]=3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    代码实现

    const int N=1e5;
    vector<int> head(N,-1);
    int cot=0;
    struct Edge{
        int to,next;
        //int weight;
        Edge():to(-1), next(-1){}				    //初始化为无邻居节点
        //Edge(int to, int w):to(to), weight(w);	//对 结构体的成员 进行赋值 的构造函数
    } edge[N];
    void Add_Edge(int u, int to, int w){
        edge[cot].to=to;
        //edge[cot].weight=w;
        edge[cot].next=head[u];                     //记录 上一个邻居节点 的 存储编号
        head[u]=cot++;                              //当前 邻居节点 的 存储编号,以便下一个邻居节点的访问
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    想要转行前端开发,却不知道如何选择靠谱的培训机构
    angular:简单实现图片如果超过屏幕高度则滚动置顶;没超过则水平垂直居中
    FL Studio 21.1.0官方中文破解版下载安装激活教程重磅发布含注册机
    Flutter自定义对话框返回相关问题汇总
    【重识云原生】第四章云网络4.8.3.1节——Open vSwitch简介
    Python哪个版本最稳定好用2023.10.19
    在Qt使用QTcpServer和QTcpSocket及多线程时安全释放内存的几个注意点
    Mall微服务版本全面升级,支持最新版SpringCloud
    软件测试之精准测试
    小插曲 -- 使用Visual Studio Code远程连接香橙派
  • 原文地址:https://blog.csdn.net/qq_73928885/article/details/133317108
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号