图的存储结构(邻接表)- 数据结构和算法57
2013-05-04 21:21
489 查看
图的存储结构(邻接表)
让编程改变世界Change the world by program
邻接表(无向图)
邻接矩阵看上去是个不错的选择,首先是容易理解,第二是索引和编排都很舒服~但是我们也发现,对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。
[caption id="attachment_2524" align="alignnone" width="600"]
邻接表(有向图)[/caption]
因此我们可以考虑另外一种存储结构方式,例如把数组与链表结合一起来存储,这种方式在图结构也适用,我们称为邻接表(AdjacencyList)。
邻接表的处理方法是这样:
图中顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便。
图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不确定,所以我们选择用单链表来存储。
[caption id="attachment_2525" align="alignnone" width="600"]
邻接表(无向图)[/caption]
邻接表(有向图)
若是有向图,邻接表结构也是类似的,我们先来看下把顶点当弧尾建立的邻接表,这样很容易就可以得到每个顶点的出度:但也有时为了便于确定顶点的入度或以顶点为弧头的弧,我们可以建立一个有向图的逆邻接表:
此时我们很容易就可以算出某个顶点的入度或出度是多少,判断两顶点是否存在弧也很容易实现。
邻接表(网)
对于带权值的网图,可以在边表结点定义中再增加一个数据域来存储权值即可:[caption id="attachment_2529" align="alignnone" width="600"]
邻接表(网)[/caption]
代码实现
作为一个课后作业给大家自己锻炼下,小甲鱼提供的参考答案仅供参考借鉴:参考代码[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/BdsUAwJNUADo5IRR55b']视频下载[/Downlink]
相关文章推荐
- 图的存储结构(邻接表)- 数据结构和算法57
- 2015-12-7 项目1—数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 【第十一周】数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 第12周 项目1—数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 数据结构和算法笔记 lesson4 线性表链式存储结构 单链表
- 一个连通图,采用邻接表作为存储结构,设计一个算法从顶点v出发的深度优化遍历的非递归过程
- 图的存储结构(邻接矩阵)- 数据结构和算法56
- 要完整准确的 均以单链表作存储结构 试编写算法将A表和B表归并成一个按元素值递减有序的线性表C 【数据结构】假设有两个按元素值递增有序的线性表A和B 并要求利用原表的空间存放C。谁会么
- 一个连通图,采用邻接表作为存储结构,设计一个算法从顶点v出发的深度优化遍历的非递归过程
- 第十一周——项目一—图及其存储结构(邻接矩阵、邻接表)算法库
- 树的存储结构2 – 数据结构和算法42
- 【数据结构】以邻接矩阵作存储结构,求连通分量的个数,设计算法求图G的深度,深度优先序列输出
- 数据结构:图的存储结构之邻接表
- 二叉树的存储结构 – 数据结构和算法45
- 以邻接表为存储结构的---图的算法实现
- 第十一周——项目一—图及其存储结构(邻接矩阵、邻接表)算法库
- 数据结构-二叉树的存储结构和遍历算法(四)
- 二叉树的存储结构 - 数据结构和算法45
- 第十二周-图及其存储结构(邻接矩阵·邻接表)算法库
- 二叉树的存储结构 - 数据结构和算法45