什么是邻接表?

  • 邻接表(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 - 博客园

图的存储结构之邻接表相关推荐

  1. 数据结构之图的存储结构:邻接表法

    图的存储结构:邻接表法 产生条件: 邻接表法的定义: 邻接表法的特点: 邻接表法的代码定义: 邻接表法与邻接矩阵法的对比: 产生条件: 当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大 邻接表法 ...

  2. 图的存储结构之邻接表(详解)

    之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M.对于稀疏图来说,M要远远小于N2.先上数据,如下. 1 2 3 ...

  3. 数据结构之图的存储结构:邻接多重表

    图的存储结构:邻接多重表 产生条件: 邻接多重表的定义: 邻接多重表的代码定义: 删除: 性能分析: 十字链表与邻接多重表的对比 产生条件: 当用邻接矩阵法存储时:空间复杂度为O(|V|^2),太大 ...

  4. 图 - 存储结构之邻接表

    对于图来说,邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构是存在对存储空间的极大浪费的.因此我们考虑另外一种存储结构方式:邻接表(Adjacency List),即 ...

  5. 数据结构之图的存储结构:邻接矩阵法

    图的存储结构:邻接矩阵法 邻接矩阵法: 邻接矩阵的定义: 邻接矩阵存储无向图: 邻接矩阵存储有向图: 邻接矩阵存储网: 邻接矩阵法的性质: 邻接矩阵法的代码实现: 矩阵运算A的n次幂的含义: 性能分析 ...

  6. 图的存储-邻接矩阵和邻接表之间的相互转化

    邻接矩阵和邻接表之间的相互转化,输出邻接矩阵和邻接表算法实现. 将文件保存为GraphBasicOperation.cpp文件,具体实现如下: #include <stdio.h> #in ...

  7. [转]数据结构:图的存储结构之邻接多重表

    1.引言: 若要删除左边的(V0,V2)这条边,需要对图下表的阴影两个结点进行删除操作. 2.邻接多重表的存储结构: iVex和jVex:是与某条边依附的两个顶点在顶点表中的下标. iLink:指向依 ...

  8. 图的存储--邻接矩阵和邻接表(链表实现和用vector实现)

    邻接矩阵: #include<iostream> #include<vector> #include<iomanip> #include<string> ...

  9. 图——图的存储结构(邻接矩阵和邻接表法)

    图的五种存储结构: 1.图的邻接矩阵表示法 图是由顶点和边或弧两部分组成.图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组表示图,一个一维数组存储图中的顶点信息,一个二维数组(邻接 ...

最新文章

  1. java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...
  2. C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则
  3. java中项目启动时加载_如何在项目启动时,加载或解析某配置文件
  4. 机器学习_JS散度详解
  5. sap新手学习第一天
  6. web调用IC卡读卡器开发第七章--NFC标签NDEF数据
  7. git push报错:fatal: unable to access ‘https://XXX.git/‘: Failed toconnect to github.com port 443
  8. 913_emacs中使用restart-emacs
  9. 程序员进阶架构师、技术总监、CTO,需要掌握哪些核心技能
  10. Unity3D之矩阵运用
  11. 内含18禁~~关于自学\跳槽\转行做网络安全行业的一些建议
  12. Web全栈~10.流程控制
  13. Louvain 社团发现算法学习(我的java实现+数据用例)
  14. 汽车行业深度报告-特斯拉生产制造革命:一体化压铸
  15. mysql中vlookup函数_Vlookup + MySql 数据高效迁移
  16. MMA-Tayloar展开
  17. 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验
  18. Java中new的作用
  19. 微信小程序下拉刷新不执行 enablePullDownRefresh
  20. 蛋花花:人工智能对于绿色发展的意义

热门文章

  1. VALSE学习(四):注意力机制-Attention Network
  2. centos6.9终端命令
  3. crontab 每天凌晨12点定时器_双十一预售:李佳琦薇娅凌晨12:00点,观看次数双双破亿...
  4. 阿里云服务器如何升级配置和降低配置?
  5. 分布式和微服务区别_分布式、集群、微服务到底有啥区别?
  6. linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
  7. Tcl Tutorial 笔记6 ·while
  8. 去掉谷歌浏览器中烦人的广告
  9. html 多层滚动,如何实现多个div同时滚动(3个以上)
  10. 手机信令数据怎么获得_手机信令数据辅助下的张江科学城职住分析及对策 | 上海城市规划...