数据结构:图;邻接矩阵和邻接表
邻接矩阵:
1.概念:
邻接矩阵是图的存储结构之一,通过二维数组表示顶点间的连接关系。
2.具体例子 :
一.无向图邻接矩阵示例:
示例图(顶点:A、B、C,边:A-B、B-C):
邻接矩阵:A B C
A 0 1 0
B 1 0 1
C 0 1 0
特点:
- 矩阵对称,主对角线为0(无自环边)。
- 顶点B的度为2,对应第2行/列非零元素数量。
- 非零元素总数=边数×2(无向图双向性)。
二、有向图邻接矩阵示例
示例图(顶点:V1→V2、V2→V3、V3→V1):
邻接矩阵:V1 V2 V3
V1 0 1 0
V2 0 0 1
V3 1 0 0
特点:
- 矩阵不对称(边方向性)。
- V3的入度=1(第3列非零数),出度=1(第3行非零数)。
三、带权图(网)邻接矩阵示例
示例图(顶点:A、B、C,边:A-B权2,B-C权5):
邻接矩阵(∞表示无穷):A B C
A 0 2 ∞
B 2 0 5
C ∞ 5 0
特点:
- 权值替代0/1,主对角线仍为0。
- 对称性保留(无向网),稀疏图可能用压缩存储。
邻接表:
概念:
邻接表是图数据结构最常用的链式存储方式,通过数组与链表结合实现顶点与边的离散化存储。
- 组成结构
- 顶点表(头节点表):一维数组存储顶点信息,每个元素包含顶点值和指向首个邻接点的指针。
- 边表(链表节点):每个顶点对应的链表,存储其所有邻接点的索引(或地址)及边权重(网图)。例如顶点A的链表包含C,表示存在边AC。
示例图结构:
假设存在无向图如下(顶点:A、B、C、D;边:A-B、A-C、B-C、B-D、C-D):
A
/ \
B——C \ /D
邻接表存储实现
1. 顶点表(顺序存储)
顶点表使用数组存储,每个元素包含顶点信息和指向邻接链表的指针:
顶点表索引 | 顶点数据 | 边表头指针
---------------------------------
0 | A | → 1 → 2 → NULL
1 | B | → 0 → 2 → 3 → NULL
2 | C | → 0 → 1 → 3 → NULL
3 | D | → 1 → 2 → NULL
2. 边表(链表存储)
每个顶点的边表以链表形式存储邻接顶点(本例使用头插法):
- 顶点A的邻接链表:B(索引1)、C(索引2)
- 顶点B的邻接链表:A(索引0)、C(索引2)、D(索引3)
- 顶点C的邻接链表:A(索引0)、B(索引1)、D(索引3)
- 顶点D的邻接链表:B(索引1)、C(索引2)
// C语言实现(无向图)
typedef struct ArcNode { // 边表节点 int adjvex; // 邻接顶点索引 struct ArcNode *next; // 指向下一邻接点
} ArcNode;typedef struct VNode { // 顶点表节点 char data; // 顶点数据 ArcNode *firstarc; // 指向第一个邻接点
} VNode, AdjList[MAX_VERTEX];typedef struct {AdjList vertices; // 顶点表数组 int vexnum, arcnum; // 顶点数和边数
} ALGraph;
相关文章:
数据结构:图;邻接矩阵和邻接表
邻接矩阵: 1.概念: 邻接矩阵是图的存储结构之一,通过二维数组表示顶点间的连接关系。 2.具体例子 : 一.无向图邻接矩阵示例: 示例图(顶点:A、B、C,边:A-B、B-C&…...
DeepSeek-R1论文阅读及蒸馏模型部署
DeepSeek-R1论文阅读及蒸馏模型部署 文章目录 DeepSeek-R1论文阅读及蒸馏模型部署摘要Abstract一、DeepSeek-R1论文1. 论文摘要2. 引言3. DeepSeek-R1-Zero的方法3.1 强化学习算法3.2 奖励建模3.3 训练模版3.4 DeepSeek-R1-Zero的性能、自进化过程和顿悟时刻 4. DeepSeek-R1&am…...
OpenEuler学习笔记(三十三):在 OpenEuler 上搭建 OpenGauss 数据库环境
在 OpenEuler 上搭建 OpenGauss 数据库环境需要按照以下步骤进行。OpenGauss 是华为开源的一款高性能关系型数据库,支持高并发、高可用性和分布式部署。 1. 环境准备 确保你的 OpenEuler 系统满足以下要求: 操作系统:OpenEuler 20.03 LTS 或…...
[C++]多态详解
目录 一、多态的概念 二、静态的多态 三、动态的多态 3.1多态的定义 3.2虚函数 四、虚函数的重写(覆盖) 4.1虚函数 4.2三同 4.3两种特殊情况 (1)协变 (2)析构函数的重写 五、C11中的final和over…...
调用DeepSeek API接口:实现智能数据挖掘与分析
调用DeepSeek API接口:实现智能数据挖掘与分析 在当今数据驱动的时代,企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台,提供了强大的API接口,帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用D…...
ffmpeg-cli-wrapper操作ffmpeg的工具
学习链接 ffmpeg-cli-wrapper - 内部封装了操作ffmpeg命令的java类库,它提供了一些类和方法,可以方便地构建和执行 ffmpeg 命令,而不需要直接操作字符串或进程。并且支持异步执行和进度监听 springboot-ffmpeg-m3u8-convertor - gitee代码 …...
【Qt】QObject类的主要功能
在 Qt 中,QObject 类是所有 Qt 对象的基类,提供了许多基础功能,使得 Qt 的对象系统能够有效地工作。它为其他类提供了核心的机制,比如信号和槽机制、对象树结构、内存管理等。 QObject 类的主要功能: 信号和槽机制&am…...
学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统
这应该算 stm32裸机用户 转 linux嵌入式系统 的入门学习笔记。 【鲁班猫】39-vnc远程桌面连接鲁班猫_哔哩哔哩_bilibili 本集的鲁班猫的视频介绍中,没有清晰明确指出需要linux开发板接入网络,接入网络可以使用有线网口或者wifi路由,有些提示…...
把 CSV 文件摄入到 Elasticsearch 中 - CSVES
在我们之前的很多文章里,我有讲到这个话题。在今天的文章中,我们就提重谈。我们使用一种新的方法来实现。这是一个基于 golang 的开源项目。项目的源码在 https://github.com/githubesson/csves/。由于这个原始的代码并不支持 basic security 及带有安全…...
PyQt组态软件 拖拽设计界面测试
PyQt组态软件测试 最近在研究PyQt,尝试写个拖拽设计界面的组态软件,目前实现的功能如下: 支持拖入控件,鼠标拖动控件位置 拖动控件边缘修改控件大小支持属性编辑器,修改当前选中控件的属性 拖动框选控件,点选控件 控…...
【Python爬虫(1)】专栏开篇:夯实Python基础
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
Java中的分布式(概念说明)
1. 分布式的基本概念 1.1 什么是分布式系统? 分布式系统(Distributed System):由多台服务器(或节点)协同工作,对外提供一个整体服务。不同节点之间通过网络通信来协同处理请求或共享数据&…...
Field ‘id‘ doesn‘t have a default value
1.程序测试时,运行到向数据库插入数据时,报以下异常 是id没有默认值; 在测试单元内单独向该数据库插入数据,报同样的异常,确定了异常的定位 2.项目时采用mybatisPlus操作数据库,报异常的数据库和另外一个数据库关联,主键ID和另外一个数据库相同,通过读取另外一个数据库的ID获…...
蓝桥杯 Java B 组之栈的应用(括号匹配、表达式求值)
一、栈的基本概念 栈(Stack)是一种特殊的线性数据结构,遵循后进先出(Last In First Out,LIFO)的原则。就像一摞盘子,最后放上去的盘子总是最先被拿走。栈有两个主要操作: 入栈&…...
Hive之分区表
Hive之分区表 文章目录 Hive之分区表写在前面分区表分区表基本操作引入分区表创建分区表语法加载数据到分区表中查询分区表中数据增加分区删除分区查看分区表有多少分区查看分区表结构 二级分区正常的加载数据分区表和数据产生关联 动态分区开启动态分区参数设置案例实操 写在前…...
Redis之持久化
1.前言 Redis⽀持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题, 当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。本文内容: • 介绍RDB、AOF的配置和运⾏流程,以及控制持久化的命令,…...
有关计算机的英语单词、短语、句子
基本计算机术语 Computer – 计算机 Hardware – 硬件 Software – 软件 Operating System (OS) – 操作系统 Processor (CPU) – 处理器(中央处理单元) Memory (RAM) – 内存(随机存取存储器) Storage – 存储 Disk Drive – 硬…...
String、StringBuffer、StringBuilder 区别
在 Java 编程中,String、StringBuffer 和 StringBuilder 是处理字符串时常用的类。它们在功能上有相似之处,但在内部实现、性能、线程安全性等方面存在显著差异。理解这些差异有助于开发者在不同的场景下做出合适的选择,提高代码的性能和效率…...
shell——分支语句
文章目录 基本语法常用判断条件(1)两个整数之间比较(2)按照文件权限进行判断(3)按照文件类型进行判断(4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令…...
【vue3】实现pdf在线预览的几种方式
今天一天对当前可用的pdf预览插件做了测试,主要需求是只能预览不能下载,但对于前端来说,没有绝对的禁止,这里只罗列实现方式。 目前采用vue3版本为:3.2.37 iframevue-officepdfjs-dist iframe 先说最简单的…...
Multi-Agent 的共享状态问题:并发写 State 的三种冲突场景与解法一次讲透
很多同学在搭第一个 Multi-Agent 系统时,脑子里的模型是这样的:多个 Agent 各干各的,然后把结果汇总到一起就行了。结果上线后发现:某个 Agent 的更新消失了、messages 数组出现重复消息、某个字段被后来的 Agent 悄悄覆盖了&…...
League Akari:英雄联盟玩家的终极智能助手 - 三大核心功能全面提升游戏体验
League Akari:英雄联盟玩家的终极智能助手 - 三大核心功能全面提升游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League…...
Arm Cortex-R82分支预测机制与实时系统优化
1. Cortex-R82分支预测机制深度解析在嵌入式实时系统中,处理器性能的发挥很大程度上依赖于分支预测的准确性。Arm Cortex-R82作为面向实时控制场景的高性能处理器,其分支预测机制的设计兼顾了效率与确定性需求。与通用处理器不同,R82的分支预…...
ATSA框架:AI辅助Pine Script v6量化交易开发实战
1. 项目概述:AI交易脚本架构师(ATSA)框架如果你在TradingView上编写过Pine Script策略,一定经历过这样的时刻:一个绝佳的交易想法在脑海中成型,但将其转化为高效、无错的代码却像在迷宫中摸索,尤…...
SketchUp模型高效导出CAD施工图:平面、立面、剖面及效果图的DWG导出全解析
SketchUp模型高效导出CAD施工图:平面、立面、剖面及效果图的DWG导出全解析 在建筑与室内设计领域,SketchUp和CAD的协同工作已成为行业标配。许多设计师习惯用SketchUp进行快速建模和方案推敲,但最终施工图仍需在CAD中完成。如何将SketchUp中的…...
告别VSCode插件!在Ubuntu 20.04上用纯命令行搞定ESP32-CAM摄像头服务器
告别VSCode插件!在Ubuntu 20.04上用纯命令行搞定ESP32-CAM摄像头服务器 当VSCode的ESP-IDF插件突然无法识别你的开发板配置,或者menuconfig界面莫名其妙崩溃时,那种被工具绑架的窒息感会让人怀念起命令行的纯粹。作为经历过三次ESP-IDF大版本…...
在多模型聚合场景下利用 Taotoken 实现智能降级与容灾
在多模型聚合场景下利用 Taotoken 实现智能降级与容灾 1. 多模型聚合架构的核心挑战 在构建高可用 AI 服务的场景中,依赖单一模型供应商存在明显的服务连续性风险。当某个主流模型服务出现暂时不可用时,缺乏备选方案的架构会导致核心业务功能中断。Tao…...
3步搞定顽固窗口:用WindowResizer强制调整任意应用窗口尺寸的完整指南
3步搞定顽固窗口:用WindowResizer强制调整任意应用窗口尺寸的完整指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些无法拖拽调整大小的应用程序窗口而烦恼…...
容器镜像同步工具comsu:轻量化私有仓库管理与DevOps实践
1. 项目概述:从“comsu”看容器镜像的轻量化实践最近在折腾容器化部署的时候,发现一个挺有意思的现象:很多开发者,包括我自己在内,都习惯性地去 Docker Hub 拉取那些“官方”或“热门”的镜像。比如跑个 Nginx…...
微信聊天记录数据主权实践:WeChatMsg本地导出工具技术解析
微信聊天记录数据主权实践:WeChatMsg本地导出工具技术解析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...
