数据结构之图的存储结构:十字链表法
图的存储结构:十字链表法
- 思维导图:
- 产生条件:
- 十字链表法的定义:
- 十字链表法的代码定义:
- 性能分析:
思维导图:
产生条件:
当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大
当用邻接表法存储时:在进行入度查询时只能进行全部节点遍历,很不方便
十字链表法的定义:
**PS:**只能存储有向图
找指定顶点的所有出边:顺着绿色指针找
找指定顶点的所有入边:顺着橙色指针找
顶点表节点:
1、data:顶点数据域
2、firstin:入边单链表头指针
3、firstout:出边单链表头指针
边表节点:
1、tailvex:尾域,存放弧尾节点
2、headvex:头域,存放弧头节点
3、hlink:弧头相同的下一条边,即指向下一个边表节点的指针
4、tlink:弧尾相同的下一条边
5、info:权值
十字链表法的代码定义:
#define MaxVertexTypeNum 100
typedef char VertexType;
typedef int EdgeType; typedef struct ArcNode{ //边表节点 int tailvex,headvex; //尾域和头域 struct ArcNode *hlink , *think; //出单链表和入单链表 //InfoType info; //权值
}ArcNode; //边表节点的类型 typedef struct VNode{ //顶点表节点 VertexType data; //顶点的数据 ArcNode *firstin,*firstout; //入单链表的头指针和入单链表的头指针
}VNode; // 邻接表类型 typedef struct{ //十字链表 VNode xlist[MaxVertexTypeNum]; //所有结点的数据 int vexnum,arcnum; //节点数和边数
}ALGraph; //十字链表的类型
性能分析:
空间复杂度:O(|v| + |E|)
数据结构之图的存储结构:十字链表法相关推荐
- 7.2图的存储结构(十字链表、邻接多重表、边集数组)
思路: 有没有可能把邻接表和逆邻接表结合起来. 所以就产生了十字链表(Orthogonal List) 为此我们重新定义顶点表结点结构: data firstIn firstOut firstIn:第 ...
- 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)
目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...
- 数据结构之图的存储结构:邻接矩阵法
图的存储结构:邻接矩阵法 邻接矩阵法: 邻接矩阵的定义: 邻接矩阵存储无向图: 邻接矩阵存储有向图: 邻接矩阵存储网: 邻接矩阵法的性质: 邻接矩阵法的代码实现: 矩阵运算A的n次幂的含义: 性能分析 ...
- 图的存储结构——邻接表法
图的存储结构--邻接表法 一.邻接表 由顶点表和边表构成,顶点表由顶点域(data)和指向第一条邻接边的指针(firstarc)构成,边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边 ...
- 数据结构之图的存储结构:邻接多重表
图的存储结构:邻接多重表 产生条件: 邻接多重表的定义: 邻接多重表的代码定义: 删除: 性能分析: 十字链表与邻接多重表的对比 产生条件: 当用邻接矩阵法存储时:空间复杂度为O(|V|^2),太大 ...
- 数据结构之图的存储结构一及其实现
图的存储结构 由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,即图没有顺序映像的存储结构,但可以借助数组的数据类型表示元素之间的关系. ...
- 数据结构之图的存储结构:邻接表法
图的存储结构:邻接表法 产生条件: 邻接表法的定义: 邻接表法的特点: 邻接表法的代码定义: 邻接表法与邻接矩阵法的对比: 产生条件: 当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大 邻接表法 ...
- 图的存储__十字链表法和邻接多重表法
文章目录 一.十字链表法 概念 性能分析: 二.邻接多重表法 概念 复杂度分析 总结 一.十字链表法 概念 1.十字链表法只能存储有向图. 2.每个表中有一个顶点数组,每个顶点用两个指针,其中橙色指针 ...
- 数据结构之图的存储结构二及其实现
上一节我们讲述了邻接矩阵法实现图,本节再来讲述一下邻接链表法实现图. 邻接链表 邻接表是图的一种链式存储结构.在邻接表中,对图中的每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点vi边(对有 ...
最新文章
- admui 能再php上用吗,Javascript 方法
- 解决Github速度太慢的几种方案
- 数据科学真的是一份有前途的工作吗?
- CentOS安装ClickHouse
- 摇篮善良:仅添加包装用于战争
- ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度
- ActiveMQ消息队列用法
- air英语怎么读_如何用英语发音“Macbook Air”
- 第三十九讲:tapestry 页面加载等待过程(ProgressiveDisplay)组件
- 【毕业答辩】学位论文答辩ppt指南!
- 【转】一个SQL查询出每门课程的成绩都大于80的学生姓名
- 千图成像python_吞了1000瓶老干妈的南山头铁鹅,Python制作千图成像(附上源代码和应用程序)...
- social-engineer-toolkit搭建-网站克隆钓鱼
- calib matlab,使用Matlab Toolbox_calib进行摄像机标定
- 易企秀把作品转赠给别人,让别人可以编辑
- 多伦多ajax小镇,加拿大人口普查数据公布:多伦多都市区人口600万
- Java编程入门与应用 P124——例5-4(计算90度的正弦值、0度的余弦值、1的反正切值、120度的弧度值)
- 6. unity之脚本
- 用友U8 ERP恢复账套
- 数据归一化 python 实现
热门文章
- 刚毕业就要求月薪10K?我觉得没毛病
- 微软TypeScript 3.0重磅发布!扶我起来,我还学得动
- 第六节:又一种新的数据类型:元组Tuple
- mysql 镜像数据_mysql官方镜像数据存储问题
- NAR再版 | 人类长非编码RNA知识库LncRNAWiki 2.0
- 基因组中的趣事(一):这个基因编码98种转录本
- M1芯片版mac软件安装出现异常怎么办?解决方法来了
- AE调整形状图层大小插件 BorderPatrol for mac
- 洛谷 深基 第4部分 基础数学与数论(19-21课)
- composer update 无法执行命令原因及解决方法