图的存储结构之邻接表
什么是邻接表?
- 邻接表(Adjacency List)是图的一种顺序存储与链式存储结合的存储方法。
- 对于图G中的每个顶点
Vi
,将所有邻接于Vi
的顶点Vj
链成一个单链表,这个单链表就称为顶点Vi的邻接表,再将所有顶点的邻接表表头
放到数组中,就构成了图的邻接表。 - 在邻接表表示中,包括两种结点结构。
- 一个是
顶点结点
,每个顶点结点由2个域组成,其中data域存储顶点Vi的名或其相关信息,firstArc指向顶点Vi的第一个邻接点的边结点;- - 第二个是
边结点
,边结点由3个域组成。其中abjVex域
存放与Vi邻接的点的序号,nextArc
指向Vi下一个邻接点的边结点,info域
存储和边或弧相关的信息,如权值,如图6.10所示
无向图的邻接表表示如图6.11所示。
为什么需要邻接表?
相比邻接矩阵,节省空间.
边结点的java实现?
class ArcNode {int adjVex;//存放相邻结点的序号ArcNode nextArc;//下一个边结点int weight;//权重public ArcNode() {adjVex = 0;weight = 0;nextArc = null;}
}
顶点的java实现
class VNode<T> {//顶点结点T data;//存储顶点的名称或其他相关信息ArcNode firstArc;//指向顶点Vi的第一个边结点public VNode() {data = null;firstArc = null;}
}
邻接表的java实现
class ArcNode {int adjVex;//存放相邻结点的序号ArcNode nextArc;//下一个边结点int weight;//权重public ArcNode() {adjVex = 0;weight = 0;nextArc = null;}
}class VNode<T> {//顶点结点T data;//存储顶点的名称或其他相关信息ArcNode firstArc;//指向顶点Vi的第一个边结点public VNode() {data = null;firstArc = null;}
}class AlGraph<T> {//图的邻接表数据类型protected final int MAXSIZE = 10;protected VNode[] adjList;//顶点int n, e;//图的顶点数和边数public AlGraph() {adjList = new VNode[MAXSIZE];//顶点列表}public void CreateLink() {}//创建无向图的邻接表public int LocateVex(T x) {int i;for (i = 0; i < n; i++) {if (adjList[i].data == x) return i;return -1;}return i;} //在图中查找顶点,返回其索引
}
参考
邻接矩阵和邻接表 - youngliu91 - 博客园
图的存储结构之邻接表相关推荐
- 数据结构之图的存储结构:邻接表法
图的存储结构:邻接表法 产生条件: 邻接表法的定义: 邻接表法的特点: 邻接表法的代码定义: 邻接表法与邻接矩阵法的对比: 产生条件: 当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大 邻接表法 ...
- 图的存储结构之邻接表(详解)
之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M.对于稀疏图来说,M要远远小于N2.先上数据,如下. 1 2 3 ...
- 数据结构之图的存储结构:邻接多重表
图的存储结构:邻接多重表 产生条件: 邻接多重表的定义: 邻接多重表的代码定义: 删除: 性能分析: 十字链表与邻接多重表的对比 产生条件: 当用邻接矩阵法存储时:空间复杂度为O(|V|^2),太大 ...
- 图 - 存储结构之邻接表
对于图来说,邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构是存在对存储空间的极大浪费的.因此我们考虑另外一种存储结构方式:邻接表(Adjacency List),即 ...
- 数据结构之图的存储结构:邻接矩阵法
图的存储结构:邻接矩阵法 邻接矩阵法: 邻接矩阵的定义: 邻接矩阵存储无向图: 邻接矩阵存储有向图: 邻接矩阵存储网: 邻接矩阵法的性质: 邻接矩阵法的代码实现: 矩阵运算A的n次幂的含义: 性能分析 ...
- 图的存储-邻接矩阵和邻接表之间的相互转化
邻接矩阵和邻接表之间的相互转化,输出邻接矩阵和邻接表算法实现. 将文件保存为GraphBasicOperation.cpp文件,具体实现如下: #include <stdio.h> #in ...
- [转]数据结构:图的存储结构之邻接多重表
1.引言: 若要删除左边的(V0,V2)这条边,需要对图下表的阴影两个结点进行删除操作. 2.邻接多重表的存储结构: iVex和jVex:是与某条边依附的两个顶点在顶点表中的下标. iLink:指向依 ...
- 图的存储--邻接矩阵和邻接表(链表实现和用vector实现)
邻接矩阵: #include<iostream> #include<vector> #include<iomanip> #include<string> ...
- 图——图的存储结构(邻接矩阵和邻接表法)
图的五种存储结构: 1.图的邻接矩阵表示法 图是由顶点和边或弧两部分组成.图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组表示图,一个一维数组存储图中的顶点信息,一个二维数组(邻接 ...
最新文章
- java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...
- C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则
- java中项目启动时加载_如何在项目启动时,加载或解析某配置文件
- 机器学习_JS散度详解
- sap新手学习第一天
- web调用IC卡读卡器开发第七章--NFC标签NDEF数据
- git push报错:fatal: unable to access ‘https://XXX.git/‘: Failed toconnect to github.com port 443
- 913_emacs中使用restart-emacs
- 程序员进阶架构师、技术总监、CTO,需要掌握哪些核心技能
- Unity3D之矩阵运用
- 内含18禁~~关于自学\跳槽\转行做网络安全行业的一些建议
- Web全栈~10.流程控制
- Louvain 社团发现算法学习(我的java实现+数据用例)
- 汽车行业深度报告-特斯拉生产制造革命:一体化压铸
- mysql中vlookup函数_Vlookup + MySql 数据高效迁移
- MMA-Tayloar展开
- 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验
- Java中new的作用
- 微信小程序下拉刷新不执行 enablePullDownRefresh
- 蛋花花:人工智能对于绿色发展的意义
热门文章
- VALSE学习(四):注意力机制-Attention Network
- centos6.9终端命令
- crontab 每天凌晨12点定时器_双十一预售:李佳琦薇娅凌晨12:00点,观看次数双双破亿...
- 阿里云服务器如何升级配置和降低配置?
- 分布式和微服务区别_分布式、集群、微服务到底有啥区别?
- linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
- Tcl Tutorial 笔记6 ·while
- 去掉谷歌浏览器中烦人的广告
- html 多层滚动,如何实现多个div同时滚动(3个以上)
- 手机信令数据怎么获得_手机信令数据辅助下的张江科学城职住分析及对策 | 上海城市规划...