当前位置: 首页 > news >正文

图的存储结构 - 链式前向星、邻接表

图的定义和术语总结

图按照有无方向分为有向图无向图。有向图由顶点和构成。无向图由顶点构成。弧有弧尾弧头之分。
无向图顶点边数叫做度,有向图顶点分为入度出度

图的存储结构

图的存储只影响遍历方式和效率。

邻接矩阵(Adjacency Matrix)

简单、好理解。但点的数量不能太多,n ≤ 1000 n≤1000n1000
无向图中,顶点v i v_ivi的度为在邻接矩阵中第i ii行(或第i ii列)的元素之和。
有向图中,顶点v i v_ivi的出度为在邻接矩阵中第i ii行的元素之和,顶点v i v_ivi的入度为在邻接矩阵中第i ii列的元素之和。
带权图中,一般初始化为∞ \infty,表示没有边。
n nn个顶点和e ee条边的无向图的创建,时间复杂度为O ( n + n 2 + e ) O(n+n^2+e)O(n+n2+e),其中初始化邻接表耗费O ( n 2 ) O(n^2)O(n2)

在无向图中,还有一种「半矩阵」的存储方式,用上三角(或下三角)+ 主对角线 压缩存储的一维数组方式。
一个n × n n\times nn×n的邻接矩阵可以被压缩到n ( n + 1 ) 2 \frac{n(n+1)}{2}2n(n+1)个元素。

邻接表(Adjacency List)

上述邻接矩阵对于边数较少顶点较多的图会产生极大浪费。
我们把数组与链表相结合的存储方式成为邻接表。
邻接表一般用ArrayList<ArrayList<Integer>> 维护。最常用。
n nn个顶点和e ee条边的无向图的创建,时间复杂度为O ( n + e ) O(n+e)O(n+e)

链式前向星

静态版的邻接表,时空效率更极致。
本质上是用链表实现的邻接表,从点映射到第一条边,再在n e x t nextnext数组上跳跃。这个链表使用头插法维护的。
h e a d headhead数组:起点 → 映射 第一条边 起点 \xrightarrow{\text{映射}} 第一条边起点映射第一条边
n e x t nextnext数组,边 → 映射 当前边的后继 边 \xrightarrow{\text{映射}} 当前边的后继映射当前边的后继
t o toto数组:边 → 映射 当前边的终点 边 \xrightarrow{\text{映射}} 当前边的终点映射当前边的终点
核心代码如下:

// 把握住头插法的流程// head[u] 和 cnt 的初始值为 -1publicstaticvoidadd(intu,intv,intw){next[++cnt]=head[u];head[u]=cntto[cnt]=v;weight[cnt]=w;}// 遍历所有点for(intu=1;u<=n;u++){System.out.print(u+"(邻居、边权) : ");// 遍历 u 的出边for(inti=head[u];i!=-1;i=next[i]){// c++ 可以用 ~i 用于表示 i != -1System.out.print("("+to[i]+","+weight[i]+") ");}System.out.println();}

h e a d headhead数组长度为点的数量
n e x t 、 t o 、 w e i g h t next、to、weightnexttoweight数组长度为边的数量,如果是无向图则需要边的数量x2。

#atom

http://www.jsqmd.com/news/295310/

相关文章:

  • Synchredible(文件夹同步软件)
  • 磁盘碎片整理OO Defrag Pro
  • 2026一对一辅导机构参考|3家实测机构分享,适配不同学段提分需求
  • 次短路问题
  • 2026物理辅导机构口碑红黑榜|实测5家爆款,避坑 提分攻略全拿捏
  • 揭秘!性价比超高的高中一对一辅导机构大盘点
  • 【WPS最强版本】WPS Office
  • 上海英语辅导哪家靠谱?2026亲测指南:线上线下避坑+高性价比机构推荐
  • 电脑超级工具箱 C盘清理、系统修复、Office安装等
  • 最新版 微软邮箱注册机
  • 解析“三零生态”:为何山水印能成高端红茶新标杆,有机认证高端红茶/高端养生红茶/高山生态高端名优红茶,红茶企业排行榜
  • Autodesk AutoCAD
  • 使用firecracker创建虚拟机和配置firecracker作为kata后端的过程
  • 2025防火材料深度解析,带你了解防火涂料的多样应用,油性防火涂料/膨胀型防火涂料,防火涂料订制厂家电话
  • 大数据领域:数据价值挖掘的挑战与机遇
  • LeetCode 383 赎金信
  • Java 实战 - 字符编码问题解决方案
  • LLMs之ISC:《Enhancing LLM Planning Capabilities through Intrinsic Self-Critique》翻译与解读
  • 干货大集合!AI应用架构师构建AI系统性能监控平台全攻略
  • AI原生应用领域边缘推理:实现实时智能决策的关键
  • 2025网文新手必看避坑指南:新人逆袭SOP|投稿指南+AI写小说工具合集
  • 盘点10个顶级写小说软件!ai写小说效率提升10倍,一个人顶一个编辑部!
  • 有哪些免费好用的AI写小说软件?盘点2026年AI写作10大辅助工具
  • 2026新手指南:盘点5款好用的写小说软件,第一款简直是“日更救星”!
  • 从零开始写网文:2026年最强小说软件生成器深度横评与避坑指南
  • 探索未来智能记忆系统 - MemU
  • [特殊字符] 提升你编码效率的超级助手:Awesome GitHub Copilot
  • 【心电信号ECG】QRS波和峰值的检测(从噪声和清晰信号中获得心跳)附Matlab代码和报告
  • 2026年市面上评价好的一体板加工厂怎么选,仿石漆保温装饰一体板/保温装饰一体板,一体板厂家哪家权威
  • 攻防世界ics-06