news 2026/3/4 13:21:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图的存储结构 - 链式前向星、邻接表

图的定义和术语总结

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

图的存储结构

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

邻接矩阵(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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/28 22:16:03

堪比Steam的游戏盒子

链接&#xff1a;https://pan.quark.cn/s/3d40e6c751d6一个非常实用的游戏下载器&#xff0c;带你玩遍各种感兴趣的游戏&#xff0c;重点是全免费【软件名称】gamebox【软件版本】v2.2.1【软件大小】210m【测试系统】win10【软件亮点】 这款游戏盒子内置了61页的游戏资源&#…

作者头像 李华
网站建设 2026/2/28 19:10:24

探索未来智能记忆系统 - MemU

MemU: 前沿智能记忆系统 在当今人工智能和大语言模型&#xff08;LLMs&#xff09;快速发展的背景下&#xff0c;MemU应运而生。它是一个功能强大的智能记忆框架&#xff0c;旨在为LLM和AI智能体提供后端支持&#xff0c;能够处理多模态输入&#xff08;包括对话、文档、图像等…

作者头像 李华
网站建设 2026/2/21 9:00:53

2025网文新手必看避坑指南:新人逆袭SOP|投稿指南+AI写小说工具合集

我是你们的老朋友。在圈子里摸爬滚打了这么久&#xff0c;太懂那种感觉了——想写小说赚点零花钱&#xff0c;脑洞有了&#xff0c;打开文档却憋不出半个字&#xff1b;或者辛辛苦苦写了三万字&#xff0c;投给编辑&#xff0c;结果连个水花都没有。 说实话&#xff0c;现在的网…

作者头像 李华
网站建设 2026/2/26 11:09:31

一维振动信号变为二维灰度图,利用局部二值模式(LBP)深化灰度图特征,然后利用CNN进行特征提取,最后使用softmax分类器和SVM进行分类对比(Python代码,解压缩后直接运行)

运行效果&#xff1a;一维振动信号变为二维灰度图&#xff0c;利用局部二值模式(LBP)深化灰度图特征&#xff0c;然后利用CNN进行特征提取&#xff0c;最后使用softmax分类器和SVM进行分类对比&#xff08;Python_哔哩哔哩_bilibili 所有用到的库的版本 1.数据集&#xff08;凯…

作者头像 李华
网站建设 2026/3/2 9:00:48

全网最全10个AI论文平台,继续教育学生轻松搞定毕业论文!

全网最全10个AI论文平台&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具助力学术写作&#xff0c;让论文不再难 在当前的学术环境中&#xff0c;AI 工具已经成为许多学生和科研人员不可或缺的助手。尤其对于继续教育的学生而言&#xff0c;撰写一篇符合要求的毕…

作者头像 李华
网站建设 2026/3/3 17:19:17

Copilot在AI原生应用中的实际案例分析与经验总结

Copilot在AI原生应用中的实际案例分析与经验总结 关键词&#xff1a;GitHub Copilot、AI原生应用、代码生成、开发效率、大语言模型 摘要&#xff1a;本文以GitHub Copilot为核心&#xff0c;结合AI原生应用的特性&#xff0c;通过实际开发案例解析Copilot在代码生成、逻辑补全…

作者头像 李华