当前位置: 首页 > news >正文

数据结构--5.1图的存储结构(十字链表、邻接多重表、边集数组)

目录

一、十字链表(Orthogonal List)

二、邻接多重表

三、边集数组

四、深度优先遍历


 

一、十字链表(Orthogonal List)

重新定义顶点表结点结构: 

datafirstInfirstOut

重新定义边表结构结点:

tailVexheadVexheadLinktailLink

       十字链表的好处就是因为把邻接表和逆邻接表整合在了一起,这样既容易找到Vi为尾的弧,也容易找到以Vi为头的弧,因而容易求得顶点的出度和入度。

        十字链表除了结构复杂一点外,其实创建图算法的时间复杂度是和邻接表相同的,因此,在有向图的应用中,十字链表也是非常好的数据结构模型。

二、邻接多重表

        我们可以仿照十字链表的方式,对边表结构进行改装,重新定义的边表结构如下:

iVexiLinkjVexjLink

        其中iVex和jVex是与某条边依附的两个顶点在顶点表中的下标。iLink指向依附顶点iVex的下一条边,jLink指向依附顶点jVex的下一条边。

        也就是说在邻接多重表里边,边表存放的是一条边,而不是一个顶点。 

三、边集数组

        边集数组是由两个一维数组构成的,一个是存储顶点的信息,另一个是存储边的信息,这个边数组每个数据元素由一条边的起点下标(begin),终点下标(end)和权(weight)组成。

四、深度优先遍历

        深度优先遍历(DepthFirstSearch),也有称为深度优先搜索,简称为DFS。

相关文章:

数据结构--5.1图的存储结构(十字链表、邻接多重表、边集数组)

目录 一、十字链表(Orthogonal List) 二、邻接多重表 三、边集数组 四、深度优先遍历 一、十字链表(Orthogonal List) 重新定义顶点表结点结构: datafirstInfirstOut 重新定义边表结构结点: tailV…...

mac上 Kratos 配置 protoc

前言 protoc 是 protobuf 文件(.proto)的编译器,可以借助这个工具把 .proto 文件转译成各种编程语言对应的源码,包含数据类型定义、调用接口等。 protoc 在设计上把 protobuf 和不同的语言解耦了,底层用 c 来实现 protobuf 结构的存储&#x…...

【c++5道练习题】①

目录 一、有限制的累加 二、计算日期到天数转换 三、仅仅反转字母 四、 字符串的第一个唯一字符 五、字符串最后一个单词的长度 一、有限制的累加 题述: 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句…...

最佳实践:TiDB 业务读变慢分析处理

作者:李文杰 网易游戏计费 TiDB 负责人 在使用或运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律,通过经验的积累可以快速的定位和优化&#xff…...

【ES6】Getter和Setter

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

3DS Max中绘制圆锥箭头

3DS Max中绘制圆锥箭头 绘制结果绘制过程步骤一&#xff1a;绘制立体圆锥方法1方法2 步骤二&#xff1a;圆锥体调参&#xff08;模型尺寸设置&#xff09;1圆锥体参数说明2圆锥体参数调整 步骤三&#xff1a;绘制圆柱体步骤四&#xff1a;圆柱体调参步骤五&#xff1a;圆锥与圆…...

虚拟机Ubuntu20.04 网络连接器图标开机不显示怎么办

执行以下指令&#xff1a; sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start...

你真的知道什么是USB Server吗?一分钟了解

很多公司都在用USB Server&#xff0c;效率大幅提高&#xff0c;但也还有不少人不知道USB Server到底是什么、干嘛用的。 USB Serve是帮助企业远程连接和集中管控USB设备的服务器 它的主要用途就是异地远程连接USB。 如&#xff0c;虚拟化环境的加密狗、前置机连接&#xff0…...

Node.js 中间件是怎样工作的?

express自带路由功能&#xff0c;可以侦听指定路径的请求&#xff0c;除此之外&#xff0c;express最大的优点就是【中间件】概念的灵活运用&#xff0c;使得各个模块得以解耦&#xff0c;像搭积木一样串起来就可以实现复杂的后端逻辑。除此之外&#xff0c;还可以利用别人写好…...

Spring MVC: 请求参数的获取

Spring MVC 前言通过 RequestParam 注解获取请求参数RequestParam用法 通过 ServletAPI 获取请求参数通过实体类对象获取请求参数附 前言 在 Spring MVC 介绍中&#xff0c;谈到前端控制器 DispatcherServlet 接收客户端请求&#xff0c;依据处理器映射 HandlerMapping 配置调…...

别再头疼反弹Shell失败了,这篇文章带你找到问题根源

别再头疼反弹Shell失败了&#xff0c;这篇文章带你找到问题根源 在渗透测试中&#xff0c;反弹shell失败的原因可以有多种。以下是一些常见的原因&#xff1a; **1.防火墙和网络过滤器&#xff1a;**目标系统可能配置了防火墙或网络过滤器&#xff0c;以限制对外部系统的连接…...

第五章 树与二叉树 四、线索树(手算与代码实现)

一、定义 1.线索树是一种二叉树&#xff0c;它在每个节点上增加了两个指针&#xff0c;分别指向其前驱和后继。 2.这些指针称为“线索”&#xff0c;因此线索树也叫做“线索化二叉树”。 3.在线索树中&#xff0c;所有的叶子节点都被线索化&#xff0c;使得遍历树的过程可以…...

服务器前后端学习理解

个人兴趣&#xff0c;突然想起来记录一下 1. 背景 想做一个最简单的网页&#xff0c;点击按钮后&#xff0c;访问服务器的redis数据库&#xff0c;读取一个为hello的值并显示 首先用js写了一个脚本&#xff0c;使用redis包&#xff0c;读取到了数据&#xff0c;并使用consol.l…...

python-数据分析-numpy、pandas、matplotlib的常用方法

一、numpy import numpy as np1.numpy 数组 和 list 的区别 输出方式不同 里面包含的元素类型 2.构造并访问二维数组 使用 索引/切片 访问ndarray元素 切片 左闭右开 np.array(list) 3.快捷构造高维数组 np.arange() np.random.randn() - - - 服从标准正态分布- - - …...

ChatGPT⼊门到精通(5):ChatGPT 和Claude区别

⼀、Claude介绍 Claude是Anthropic开发的⼀款⼈⼯智能助⼿。 官⽅⽹站&#xff1a; ⼆、Claude能做什么 它可以通过⾃然语⾔与您进⾏交互,理解您的问题并作出回复。Claude的主要功能包括: 1、问答功能 Claude可以解答⼴泛的常识问题与知识问题。⽆论是历史上的某个事件,理科…...

ChatGPT 总结数据分析的所有知识点

ChatGPT功能非常多,特别是对某个行业,某个方向,某个技术进行总结那是相当专业的。 如下图。 直接用一个指令便总结出来数据分析当中的所有知识点内容。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Ex…...

hadoop-HDFS

1.HDFS简介 2.1 Hadoop分布式文件系统-HDFS架构 2.2 HDFS组成角色及其功能 &#xff08;1&#xff09;Client&#xff1a;客户端 &#xff08;2&#xff09;NameNode (NN)&#xff1a;元数据节点 管理文件系统的Namespace元数据 一个HDFS集群只有一个Active的NN &#xff…...

0202hdfs的shell操作-hadoop-大数据学习

文章目录 1 进程启停管理2 文件系统操作命令2.1 HDFS文件系统基本信息2.2 介绍2.3 创建文件夹2.4 查看指定文件夹下的内容2.5 上传文件到HDFS2.6 查看HDFS文件内容2.7 下载HDFS文件2.8 HDFS数据删除操作 3 HDFS客户端-jetbrians产品插件3.1 Big Data Tools 安装3.2 配置windows…...

生活小记-挂号信

"挂号信"通常指的是在邮寄过程中通过挂号邮寄服务寄送的信件&#xff0c;相对于普通信件有一些特殊的特点和服务。以下是挂号信与其他信件&#xff08;例如普通信件&#xff09;之间的区别&#xff1a; 跟踪和确认&#xff1a; 挂号信&#xff1a;通过挂号邮寄服务寄…...

3D点云处理:基于PCA的计算点云位姿(占位待整理)

文章目录 文章目录&#xff1a;3D视觉个人学习目录微信&#xff1a;dhlddxB站: Non-Stop_...

相位恢复技术:XY-Hamiltonian优化框架与应用

1. 相位恢复问题的本质与挑战相位恢复是衍射成像领域长期存在的核心难题。当光波通过物体时&#xff0c;其振幅和相位信息都会发生变化。然而&#xff0c;传统的光学探测器&#xff08;如CCD&#xff09;只能记录光强&#xff08;振幅平方&#xff09;&#xff0c;而丢失了关键…...

别再手动算日期了!SQL Server里DATEDIFF和DATEADD的5个实战场景,数据分析师必看

SQL Server日期处理实战&#xff1a;DATEDIFF与DATEADD的5个高阶应用场景 在数据分析与报表开发领域&#xff0c;时间维度永远是核心要素之一。无论是用户行为分析、业务指标计算还是系统自动化处理&#xff0c;精准的日期运算能力直接决定了数据价值的挖掘深度。作为SQL Serve…...

标准输入流,输出流,错误流 以及 重定向 的原理

标准输入流、输出流、错误流在操作系统与C语言中的表达 1. 操作系统层面&#xff08;Linux/Unix&#xff09; 在操作系统层面&#xff0c;标准输入、标准输出和标准错误流通过文件描述符&#xff08;File Descriptor&#xff09; 来标识&#xff1a;流类型文件描述符 (fd)默认设…...

利欧股份持续推进“制造业+科技投资”战略 主业与投资协同效应显现

全球商业航天企业SpaceX&#xff08;太空探索技术公司&#xff09;计划于6月12日在纳斯达克上市&#xff0c;股票代码为SPCX。此次IPO预计融资规模约为800亿美元&#xff0c;市场估值在1.75万亿至2万亿美元之间&#xff0c;引发资本市场广泛关注。据悉&#xff0c;利欧股份&…...

FPGA存储资源怎么选?一张图看懂LUTRAM、BRAM和URAM的适用场景与性能差异

FPGA存储资源选型指南&#xff1a;LUTRAM、BRAM与URAM的深度对比与实战选择 在FPGA设计的世界里&#xff0c;存储资源的选择往往决定了整个系统的性能和效率。想象一下&#xff0c;你正在为一个高性能图像处理系统设计FPGA架构&#xff0c;需要在片上实现一个容量为128Kb的帧缓…...

如何用Path of Building物品制作系统打造终极装备:5个简单步骤

如何用Path of Building物品制作系统打造终极装备&#xff1a;5个简单步骤 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding 你是否曾为《流放之路》中装备制作耗费大量通货却得…...

GitLab团队协作实战:从分支策略到CI/CD流水线优化指南

1. 项目概述&#xff1a;为什么需要一个专属的GitLab使用指导&#xff1f;在团队协作开发中&#xff0c;版本控制系统是基石&#xff0c;而GitLab作为集代码托管、CI/CD、项目管理于一体的DevOps平台&#xff0c;其重要性不言而喻。然而&#xff0c;对于许多新加入团队的开发者…...

从7805到D-CAP2:TPS54229E实现12V转5V高效电源设计

1. 从线性稳压到D-CAP2&#xff1a;一个电源工程师的选型心路刚入行那会儿&#xff0c;画的第一块51单片机板子&#xff0c;电源部分几乎不用想&#xff0c;一个7805三端稳压器&#xff0c;加上输入输出两个电解电容&#xff0c;齐活。这东西皮实、便宜&#xff0c;满大街都是&…...

别再让你的Qt界面有锯齿了!手把手教你用QPainter的Antialiasing和HighQualityAntialiasing

Qt图形渲染优化实战&#xff1a;抗锯齿原理与性能调优指南 在开发需要精细图形展示的Qt应用时&#xff0c;开发者常会遇到一个棘手问题——图形边缘的锯齿现象。无论是仪表盘上的指针、数据可视化中的曲线&#xff0c;还是自定义控件的圆角边框&#xff0c;锯齿都会严重影响视觉…...

Python在气象与海洋中的实践技术应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;能够在不同操作系统和平台使用&#xff0c;简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库&#xff0c;还有丰富的第三方库&#xff0c;并且能够把用其他语言&#xff08;C/C、Fortran…...