图的存储结构:十字链表法

  • 思维导图:
  • 产生条件:
  • 十字链表法的定义:
  • 十字链表法的代码定义:
  • 性能分析:

思维导图:

产生条件:

当用邻接矩阵存储时:空间复杂度为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|)

数据结构之图的存储结构:十字链表法相关推荐

  1. 7.2图的存储结构(十字链表、邻接多重表、边集数组)

    思路: 有没有可能把邻接表和逆邻接表结合起来. 所以就产生了十字链表(Orthogonal List) 为此我们重新定义顶点表结点结构: data firstIn firstOut firstIn:第 ...

  2. 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)

    目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...

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

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

  4. 图的存储结构——邻接表法

    图的存储结构--邻接表法 一.邻接表 ​ 由顶点表和边表构成,顶点表由顶点域(data)和指向第一条邻接边的指针(firstarc)构成,边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边 ...

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

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

  6. 数据结构之图的存储结构一及其实现

    图的存储结构 由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,即图没有顺序映像的存储结构,但可以借助数组的数据类型表示元素之间的关系. ...

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

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

  8. 图的存储__十字链表法和邻接多重表法

    文章目录 一.十字链表法 概念 性能分析: 二.邻接多重表法 概念 复杂度分析 总结 一.十字链表法 概念 1.十字链表法只能存储有向图. 2.每个表中有一个顶点数组,每个顶点用两个指针,其中橙色指针 ...

  9. 数据结构之图的存储结构二及其实现

    上一节我们讲述了邻接矩阵法实现图,本节再来讲述一下邻接链表法实现图. 邻接链表 邻接表是图的一种链式存储结构.在邻接表中,对图中的每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点vi边(对有 ...

最新文章

  1. admui 能再php上用吗,Javascript 方法
  2. 解决Github速度太慢的几种方案
  3. 数据科学真的是一份有前途的工作吗?
  4. CentOS安装ClickHouse
  5. 摇篮善良:仅添加包装用于战争
  6. ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度
  7. ActiveMQ消息队列用法
  8. air英语怎么读_如何用英语发音“Macbook Air”
  9. 第三十九讲:tapestry 页面加载等待过程(ProgressiveDisplay)组件
  10. 【毕业答辩】学位论文答辩ppt指南!
  11. 【转】一个SQL查询出每门课程的成绩都大于80的学生姓名
  12. 千图成像python_吞了1000瓶老干妈的南山头铁鹅,Python制作千图成像(附上源代码和应用程序)...
  13. social-engineer-toolkit搭建-网站克隆钓鱼
  14. calib matlab,使用Matlab Toolbox_calib进行摄像机标定
  15. 易企秀把作品转赠给别人,让别人可以编辑
  16. 多伦多ajax小镇,加拿大人口普查数据公布:多伦多都市区人口600万
  17. Java编程入门与应用 P124——例5-4(计算90度的正弦值、0度的余弦值、1的反正切值、120度的弧度值)
  18. 6. unity之脚本
  19. 用友U8 ERP恢复账套
  20. 数据归一化 python 实现

热门文章

  1. 刚毕业就要求月薪10K?我觉得没毛病
  2. 微软TypeScript 3.0重磅发布!扶我起来,我还学得动
  3. 第六节:又一种新的数据类型:元组Tuple
  4. mysql 镜像数据_mysql官方镜像数据存储问题
  5. NAR再版 | 人类长非编码RNA知识库LncRNAWiki 2.0
  6. 基因组中的趣事(一):这个基因编码98种转录本
  7. M1芯片版mac软件安装出现异常怎么办?解决方法来了
  8. AE调整形状图层大小插件 BorderPatrol for mac
  9. 洛谷 深基 第4部分 基础数学与数论(19-21课)
  10. composer update 无法执行命令原因及解决方法