图的四种存储方式

news2025/1/11 20:43:06

图片来源:王道数据结构第六章


目录

邻接矩阵法

不带权的

带权的图

邻接矩阵法的性能分析

链接 对阵矩阵的压缩存储

邻接矩阵法的性质

邻接表法

链接 树的孩子表示法

性能分析

对比邻接矩阵

十字链表法

性能分析

邻接多重表

邻接多重表存储无向图

四种存储结构的总结


邻接矩阵法

不带权的

其实就是二维数组。

image.png

//图的相关代码
#define MaxVertexNum 100 //顶点数目的最大值
typedef struct{
    char Vex[MaxVertexNum];//顶点表
    int Edge[MaxVertexNum][MaxVertexNum];//邻接矩阵,边表
    int vexnum,arcnum;//图的当前顶点数和边数
}MGraph;

里面存储的值,为1就是有边,为0就是没有边。

无向图中:

第i个结点的度=第i行(或者第i列)的非零元素的个数。

有向图中

第i个结点的出度:第i行的非零元素的个数

第i个结点的入度:第i列的非零元素的个数

第i个结点的度=第i行、第i列的非零元素的个数之和

 

要遍历矩阵的一整行或者一整列,所以相当于遍历一遍所有的结点,所以为O(|V|)。

带权的图

 

邻接矩阵法的性能分析

链接 对阵矩阵的压缩存储

邻接矩阵法的性质

邻接表法

顺序+链式存储

有一个数组,存储顶点,这个顶点是个结点,里面有顶点信息,还有指向第一条边的指针。

然后边的存储也是利用结点,ArcNode,存储了该结点指向的结点的下标(要存储本边指向的是哪个结点)以及指向下一条弧的指针,可能还会有边权值。

 

最后图的存储,利用一个顶点结点们 构成的数组vertices,还存储了顶点和边的数量

 

总结:

1.先写顶点的存储结构 顶点的数值和指向第一条边的指针,这个指针式边类型的指针(要存储本边指向的是哪个结点,还要存储一个指针,指向下一条边)

int data , *first,

2.编写 边类型的结点

要存储本边指向的是哪个结点,还要存储指向下一条边的指针 ,可能还会有边权值。

int index(adjvex),sstruct ArcNode *next

3.最后形成图的存储

AdjList vertices,

链接 树的孩子表示法

 

性能分析

无向图:

 

无向图 A-B ,A到B B到A都存储了一遍

有向图:

 

对比邻接矩阵

邻接矩阵:只要确定了顶点编号,图的邻接矩阵表示方法就唯一。

邻接表:图的邻接表的表示方式并不唯一

 

十字链表法

 

首先有一排顶点结点,用数组顺序存储

顶点结点:存储它本身的数据,一个指针这个指针指向该顶点作为弧头的第一条狐(边的终点,可计算这个结点的入度),一个指针这个指针指向该顶点作为狐尾的第一条弧(边的起点,可计算这个结点的出度)

 

弧结点

 

性能分析

 

邻接多重表

邻接矩阵存储无向图:空间复杂度高

邻接表存储无向图:两条边对应两份冗余信息,删除顶点、删除边等操作,时间复杂度高

邻接多重表存储无向图

顶点结点:数据据,一个指针指向与该顶点相连的第一条边

边结点:存储边的两个顶点编号i j 可能还有权值,一个指针指向依附于顶点i的下一条边,一个指针指向依附于顶点j 的下一条边

 

四种存储结构的总结

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/945507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后端Windows软件环境安装配置大全[JDK、Redis、RedisDesktopManager、Mysql、navicat、VMWare、finalshell、MongoDB...持续更新中]

文章目录 前言1. 安装 JDK2. 安装 Redis3. 安装 RedisDesktopManager(Redis可视化工具)4. 安装 Mysql5. 安装 navicat (Mysql可视化工具)6. 安装 VMWare7. 安装 finalshell (VMWare可视化工具)8. 安装 MongodDB9. 安装 maven 总结 前言 为了巩固所学的知…

WIFI模块8121N-UH的应用

随着科技的不断发展,无人机的应用领域正不断扩展并变得异常广泛。无论是无人机的起飞、航行、悬停还是返航等各个阶段,都依赖于高度精准的无线遥控技术。同时,无人机在飞行过程中需要实现无线视频传输,因此,如何确保无…

暴力递归转动态规划(二)

上一篇已经简单的介绍了暴力递归如何转动态规划,如果在暴力递归的过程中发现子过程中有重复解的情况,则证明这个暴力递归可以转化成动态规划。 这篇帖子会继续暴力递归转化动态规划的练习,这道题有点难度。 题目 给定一个整型数组arr[]&…

C#2010 .NET4 解析 json 字符串

下载Newtonsoft.Json.dll using System; using System.Collections.Generic; using System.Linq; using System.Text;using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; namespace ConsoleApplication1 {class Program{static void Main(string[] args){strin…

C++编辑修改PDF

PDFWriter是一个易于使用的C创建、修改PDF文档的库 1.创建一个PDF文件 #include #include “PDFWriter.h” int main() { std::cout << “Hello World!\n”; PDFWriter pdfWriter; int retpdfWriter.StartPDF(“D:\mytestwriterpdf.pdf”, ePDFVersion13); if (ret eS…

DC/DC开关电源学习笔记(二)开关电源的分类

&#xff08;二&#xff09;开关电源的分类 1.DC/DC类开关电源2.AC/DC变换器3.电路结构分类4.功率开关管分类5.电路拓扑分类 开关电源可分为 AC/DC和DC/DC两大类。 作为二次电源的DC/DC变换器现已实现模块化&#xff0c; 且设计技术及生产工艺在国内外均已成熟和标准化&#xf…

【USRP】调制解调系列6:16APSK、32APSK 、基于labview的实现

APSK APSK是&#xff0c;与传统方型星座QAM&#xff08;如16QAM、64QAM&#xff09;相比&#xff0c;其分布呈中心向外沿半径发散&#xff0c;所以又名星型QAM。与QAM相比&#xff0c;APSK便于实现变速率调制&#xff0c;因而很适合目前根据信道及业务需要分级传输的情况。当然…

基于白冠鸡算法优化的BP神经网络(预测应用) - 附代码

基于白冠鸡算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于白冠鸡算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.白冠鸡优化BP神经网络2.1 BP神经网络参数设置2.2 白冠鸡算法应用 4.测试结果&#xff1a;5.Matlab代…

【ES6】Getter和Setter

JavaScript中的getter和setter方法可以用于访问和修改对象的属性。这些方法可以通过使用对象字面量或Object.defineProperty()方法来定义。 以下是使用getter和setter方法的示例&#xff1a; <!DOCTYPE html> <script>const cart {_wheels: 4,get wheels(){retu…

1239. 串联字符串的最大长度;2826. 将三个组排序;2563. 统计公平数对的数目

1239. 串联字符串的最大长度 核心思想&#xff1a;递归&#xff0c;选或者不选&#xff0c;定义dfs(i&#xff0c;pre)表示从i-n的满足要求的arr中选择字符串串联所能获得的最大长度为dfs(i,pre)&#xff0c;pre表示已经选过的字符串所组成的集合。然后就有两种情况选&#xf…

2023年天津市大学软件学院专升本报名考试人数

2023年天津市大学软件学院专升本科五校联合招生考试报名人数、参加考试人数、录取人数和录取率多少&#xff0c;请看下图详细说明

腾讯云学生服务器申请、学生认证入口及学生机价格表

腾讯云学生服务器申请、学生认证入口及学生机价格表&#xff0c;学生机申请流程&#xff0c;腾讯云学生服务器优惠活动&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&…

Linux知识点 -- 网络基础(一)

Linux知识点 – 网络基础&#xff08;一&#xff09; 文章目录 Linux知识点 -- 网络基础&#xff08;一&#xff09;一、网络发展二、协议1.OSI七层模型2.TCP/IP五层&#xff08;或四层&#xff09;模型 三、网络传输基本流程1.局域网中的两台主机通信流程2.跨网段的两台主机间…

JOJO的奇妙冒险

JOJO,我不想再做人了。 推荐一部动漫 JOJO的奇妙冒险 荒木飞吕彦创作的漫画 《JOJO的奇妙冒险》是由日本漫画家荒木飞吕彦所著漫画。漫画于1987年至2004年在集英社的少年漫画杂志少年JUMP上连载&#xff08;1987年12号刊-2004年47号刊&#xff09;&#xff0c;2005年后在集英…

盖革计数管——核辐射测量仪核心部件

一&#xff1a;外形尺寸(最大值) 1、直径6.2mm 2、长度56mm 二&#xff1a;参数 1、起始计数电压:≦350V 2、坪区范围&#xff1a;380—480V 3、坪区范围斜率&#xff1a;≦15&#xff05;/100V 4、工作温度范围:-40℃—55℃ 5、放电电压:550V 6、死时间:20us 7、推荐工作电压4…

信息系统项目管理师(第四版)教材精读思维导图-第六章项目管理理论

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 目录 6.1 PMBOK的发展 6.2 项目基本要素 6.3…

51社区滑块验证码

url aHR0cHM6Ly9wYXNzcG9ydC41MS5jb20vP2dvdXJsPWh0dHBzOi8vd2FuLjUxLmNvbS92dWUvaW5kZXg 接口分析 圈起来的两个接口&#xff0c;一个拿滑块&#xff0c;一个验证。 参数分析 没用特别难的加密 验证识别 需要注意的是&#xff0c;我们先拿到的图片是混乱的&#xff0c;需…

人员闯入检测告警算法

人员闯入检测告警算法通过yolov5网络模型识别检测算法&#xff0c;人员闯入检测告警算法对未经许可或非法进入的人员进行及时识别告警&#xff0c;确保对危险区域的安全管理和保护。YOLO系列算法是一类典型的one-stage目标检测算法&#xff0c;其利用anchor box将分类与目标定位…

图解Spring三级缓存的工作流程

一级缓存&#xff1a;保存了完整的Bean实例&#xff0c;可以直接使用 二级缓存&#xff1a;保存了实例化以后还没有设置属性值的Bean实例&#xff0c;也就是一个空的对象&#xff0c;没有做依赖注入 三级缓存 &#xff1a;存放Bean工厂&#xff0c;它用来生成原始Bean对象并且…