图的存储__十字链表法和邻接多重表法
文章目录
- 一、十字链表法
- 概念
- 性能分析:
- 二、邻接多重表法
- 概念
- 复杂度分析
- 总结
一、十字链表法
概念
1.十字链表法只能存储有向图。
2.每个表中有一个顶点数组,每个顶点用两个指针,其中橙色指针指向将该顶点作为弧头的第一条弧,绿色指针指向以该顶点作为弧尾的第一条弧。
3.每个弧节点也有两个指针和两个顶点编号域(用于存储弧头编号和弧尾编号),橙色指针指向弧头编号相同的下一条弧,绿色指针指向弧尾相同的下一条弧。(结合下图叙述)
性能分析:
空间复杂度(V,E):O((V)+(E));
时间复杂度:
入度:从橙色指针一直往下遍历,O(N)
出度:从绿色指针一直往下遍历,O(N)
二、邻接多重表法
概念
1.每个表都有一个顶点表,每个顶点拥有一个指针,指向与该顶点相连的第一条边。
2.每个边节点都有两个顶点编号域和两个指针域。其中橙色指针指向依附于橙色顶点的下一条边,绿色指针指向依附于绿色顶点的下一条边。
3.只能用来存储无向图。
复杂度分析
空间复杂度:(O(E+V))
时间复杂度: 求度:从顶点的指针域一直往下遍历,直到遇到空指针。删除边:例如删除(A,B),删除要对A顶点的指针和B顶点指针进行修改,可以从AB边的橙色指针域出发,指向下一个节点。B类似思路,从绿色指针域出发指向下一条边。删除顶点(如E):直接删除顶点和顶点相连的边,将会使指向顶点的边出现问题。此时,需将(2,1)边的绿色指针域置为(4,1)绿色指针域(NULL),(2,3)将橙色指针域置为(2,4)的橙色指针域(NULL)。都可以在O(N)解决掉
总结
十字链表主要是解决了邻接矩阵法在存储时的冗余和邻接链表存储时求入度时时间复杂度过高的问题。
邻接多重表在缩小了邻接矩阵存储的空间复杂度的同时,还降低了删除顶点时的时间复杂度。
图的存储__十字链表法和邻接多重表法相关推荐
- 7.2图的存储结构(十字链表、邻接多重表、边集数组)
思路: 有没有可能把邻接表和逆邻接表结合起来. 所以就产生了十字链表(Orthogonal List) 为此我们重新定义顶点表结点结构: data firstIn firstOut firstIn:第 ...
- 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)
目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...
- 图的链式存储结构解析(邻接表、逆邻接表、十字链表、邻接多重表)
图的矩阵表示法比较消耗空间,需要花费$ n 2 n^2 n2$个单元存储边(弧).在边数较少的情况下比较浪费.我们这里来讨论图的链式存储结构. 图的链式结构主要有四类:邻接表.逆邻接表.十字链表.邻接 ...
- 构建复杂网络的几种方法(邻接矩阵,邻接表,十字链表,邻接多重表)
目录 1. 数据结构 线性结构 非线性结构 2. 复杂网络的数组表示 3. 复杂网络的邻接表表示 4. 邻接矩阵与邻接表的比较 5. 复杂网络的其他表示方法 逆邻接表 十字链表 邻接多重表 前向星 链 ...
- 十字链表与邻接多重表的画法
文章目录 前言 一.十字链表 1.画邻接表 2.增加弧节点的域 3.自己指向自己 二.邻接多重表 1.画顶点 2.画边 3.自己指向自己 前言 近期一直在构建算法技能树的数据,借此机会,重新把数据结构 ...
- (王道408考研数据结构)第六章图-第二节1:图的存储结构(邻接矩阵、邻接表、十字链表和邻接多重表)
文章目录 一:邻接矩阵--适合存储稠密图 (1)邻接矩阵定义 (2)代码 二:邻接表 (1)邻接表定义 (2)代码 (3)邻接表和邻接矩阵对比 三:十字链表(用于有向图) 四:邻接多重表(用于优化无向 ...
- 十字链表、邻接多重表
邻接矩阵.邻接表存储有向图 十字链表存储有向图 十字链表是有向图的一种链式存储结构.在十字链表中,对应于有向图中的每条弧有一个结点,对应于每个顶点也有一个结点. 弧结点中有5个域:尾域(tailvex ...
- 59十字链表,邻接多重表,边集数组,佛洛依德的冰山理论
- 数据结构考研笔记(十五)——图的存储结构邻接矩阵、邻接表、十字链表、临界多重表的概念
图的存储结构 1.邻接矩阵 1.1有向图 1.2无向图 2.邻接表法 2.1有向图边表 2.2无向图边表 3.十字链表 4.临界多重表 十字链表与临界多重表 1.邻接矩阵 邻接矩阵法结点数为n的图G ...
最新文章
- Unity中GameObject API解析
- Maven2整合集成IntelliJ IDEA创建Web项目
- ZVM – 记VMP保护代码还原工程
- Java程序员从笨鸟到菜鸟之(九十一)跟我学jquery(七)jquery动画大体验
- 【视频】vue组件之slot插槽
- vs2008 C++创建和调用标准DLL
- Linux C高级编程——网络编程之TCP(3)
- 为什么今日头条是技术牛人收割机(FW)
- 使用折半查找法查找数组中的元素
- 【小程序源码】修复图片音频全新升级带特效神器小游戏微信小程序源码下载-多种游戏支持
- VMware下ubuntu与windows主机共享文件夹
- malloc,calloc区别
- 利用Suspense组件来包装请求
- 公司邮件登录发邮件,在outlook邮件撤回怎么操作?
- 最新版表情包小程序源码无需服务器
- 学习项目管理理论后的体会
- 在origin中画一条Y=x的自定义函数曲线
- AI贺新年,开发者的虎年这样过才有意思
- windows 趣味实用脚本
- Intellij IDEA 必不可少的几个插件
热门文章
- opencv-python:读取视频,不改变视频分辨率修改视频帧率
- Ubuntu安装SqlServer
- 关于java实例方法可以访问类变量的一种解释
- oracle开窗函数有哪些,oracle分析函数理解(开窗函数)
- 久等了的QIIME 2 2020.2 更新来了
- windows10系统显示浏览器未连接到互联网?手把手教你如何解决
- MATLAB subplot、 stem
- java 动态编译_Java动态编译
- python基于PHP+MySQL的物流配送管理系统平台
- 关联规则挖掘算法: Aprior算法和Fpgrowth算法