数据结构之图的存储结构:邻接多重表
图的存储结构:邻接多重表
- 产生条件:
- 邻接多重表的定义:
- 邻接多重表的代码定义:
- 删除:
- 性能分析:
- 十字链表与邻接多重表的对比
产生条件:
当用邻接矩阵法存储时:空间复杂度为O(|V|^2),太大
当用邻接表法存储时:一条边会重复存储两次,产生冗余
邻接多重表的定义:
顶点表节点:
1、data:顶点数据域
2、firstedge:边表节点的头指针
边表节点:
1、ivex:该边的第一个端点
2、ilink:与该端点相邻的下一个边表节点的指针
3、jvex:该边的第二个端点
4、jlink:与该端点相邻的下一个边表节点的指针
5、info:权值
6、mark:标记
邻接多重表的代码定义:
#define MaxVertexTypeNum 100
typedef char VertexType;
typedef int EdgeType; typedef struct ArcNode{ //边表节点 int ivex,jvex; //边的俩个节点 struct ArcNode *ilink , *jhink; //维护俩个节点的边表 //InfoType info; //权值 //bool mark; //标记位
}ArcNode; //边表节点的类型 typedef struct VNode{ //顶点表节点 VertexType data; //顶点的数据 ArcNode *firstedge; //边表的头指针
}VNode; // 邻接表类型 typedef struct{ //十字链表 VNode adjmulist[MaxVertexTypeNum]; //所有结点的数据 int vexnum,arcnum; //节点数和边数
}ALGraph; //十字链表的类型
删除:
删除边AB:
删除节点E:
性能分析:
空间复杂度:O(|v| + |E|)
十字链表与邻接多重表的对比
十字链表: 用于有向图,解决了无法快速找到一个顶点入边的问题
邻接多重表: 用于无向图,解决了重复存储同一条边2次的问题
数据结构之图的存储结构:邻接多重表相关推荐
- 【图的存储】邻接多重表
目录 前言 一.什么是邻接多重表? 二.邻接多重表的构成 1.顶点集+边集 2.顶点和边的连接 总结 前言 无论是什么程序都要和数据打交道,一个好的程序员会选择更优的数据结构来更好的解决问题,因此 ...
- 【数据结构】图的存储结构—邻接表
目录 什么是邻接表? 邻接表:定义 邻接表:相关类 邻接表:基本操作 1)创建无向网 2)创建有向网 3)顶点定位 4)插入边 5)第一个邻接点 6)查询下一个邻接点 小试牛刀 对比邻接表与邻接矩阵
- 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)
目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...
- 图的存储结构——邻接表法
图的存储结构--邻接表法 一.邻接表 由顶点表和边表构成,顶点表由顶点域(data)和指向第一条邻接边的指针(firstarc)构成,边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边 ...
- [转]数据结构:图的存储结构之邻接多重表
1.引言: 若要删除左边的(V0,V2)这条边,需要对图下表的阴影两个结点进行删除操作. 2.邻接多重表的存储结构: iVex和jVex:是与某条边依附的两个顶点在顶点表中的下标. iLink:指向依 ...
- 数据结构之图的存储结构:邻接表法
图的存储结构:邻接表法 产生条件: 邻接表法的定义: 邻接表法的特点: 邻接表法的代码定义: 邻接表法与邻接矩阵法的对比: 产生条件: 当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大 邻接表法 ...
- 数据结构之图的存储结构:邻接矩阵法
图的存储结构:邻接矩阵法 邻接矩阵法: 邻接矩阵的定义: 邻接矩阵存储无向图: 邻接矩阵存储有向图: 邻接矩阵存储网: 邻接矩阵法的性质: 邻接矩阵法的代码实现: 矩阵运算A的n次幂的含义: 性能分析 ...
- 数据结构之图的存储结构一及其实现
图的存储结构 由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,即图没有顺序映像的存储结构,但可以借助数组的数据类型表示元素之间的关系. ...
- 数据结构之图的存储结构:十字链表法
图的存储结构:十字链表法 思维导图: 产生条件: 十字链表法的定义: 十字链表法的代码定义: 性能分析: 思维导图: 产生条件: 当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大 当用邻接表法存 ...
最新文章
- Chapter 5 带颜色的同心圆
- 兼顾隐私与权利,华为以“科技有道”,实现“隐私无价”
- 不属于前后端分离的Vue+Django的例子
- 微服务的好处与弊端_在云原生时代,就一定要用微服务吗?
- 利用C++实现自定义插件
- 在Ubuntu 上怎么连接装有iOS 7的iPhone或iPad
- java中删除特定后缀名文件
- C语言入门篇(二)指针的介绍和运用
- 我们总结了每个技术团队都会遇到的 4 个难题 1
- 网络远程控制原理及技术实现
- 西北工业大学软件学院大数据技术实验(二)
- 在数学的海洋中飘荡(转自Dahua的Blog)
- 中国体育明星商业价值综合指数孙杨、苏炳添、武大靖列前三位
- Jetson Xavier NX系统安装至 nvme 硬盘
- PLC控制电动机的顺序启动逆序停止
- 一对一网络课堂教室应用教程实例
- 国产系统下的DES,SM4工具,银河麒麟V10桌面系统,飞腾芯片
- AlphaZero:一种人类从未见过的智慧
- C++【入门】购买文具
- thingsboard集群docker swarm部署报getsockopt failed strangely: Operation not permitted