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

数组模拟邻接表 #图论

文章目录

  • 为什么要用数组来模拟邻接表
  • 存储思路
  • 遍历思路

树是特殊的图,因此邻接表可以存储图和树两种数据结构。

为什么要用数组来模拟邻接表

在算法设计当中,利用数组来代替结构体模拟各种数据结构会更加简单。

存储思路

给定如下数据,我们可以构造如下的一个邻接表
在这里插入图片描述
在这里插入图片描述
请看代码

/**
	idx:索引,代表数组哪个位置,是否连续不重要,
	因为我们的存储是链式的。
	
	h[idx] : 顶点表,下标idx代表是哪个顶点,初始值全部为-1,代表没有数据
	e[idx] : 边表,下标idx存储的边值 
	ne[idx] :  索引为idx的下一个索引
	
	其中a是顶点,b是边表。即a指向b
	
	如果其是一个无向图,那么我们可以建立a指向b和b指向a。
	如果其实一个树,那么a代表父节点,b代表孩子节点
**/
void add(int a,int b){
	e[idx]=b;
	ne[idx]=h[a];
	h[a]=idx++;
}

在这里插入图片描述

遍历思路

下面演示遍历1号头结点

for(int i=h[1]; i!=-1; i=ne[i]){
	int j=e[i];//当前边的值
	cout<<j; 
} 


相关文章:

  • 递归陷阱:如何优雅地等待 props.parentRoute?
  • 使用Java实现Oracle表结构转换为PostgreSQL的示例方案(AI)
  • 前端对接生成式AI接口(类ChatGPT)问题汇总
  • MySQL-sql优化
  • 网络运维学习笔记(DeepSeek优化版) 021 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
  • 【Hbase】查看所有表
  • EMC整改案例:某网络机顶盒网口辐射
  • java-正则表达式-集合-泛型-注解-异常
  • 0-组合优化图神经网络的退火机器辅助学习(arxiv 25)(完)
  • 在 Windows 系统下,将 FFmpeg 编译为 .so 文件
  • Linux下JDK1.8安装配置
  • 家族族谱管理系统基于Spring Boot
  • 快速查询手机是否处于联网状态?
  • 【SpringMVC】SpringMVC进阶,类型转换器源码分析,json转换,视图解析器,以及操作各种域的API
  • 遨游科普|三防平板是什么?哪些领域能用到?
  • 82.RadioButton的选中处理逻辑 C#例子 WPF例子
  • Linux中的yum和vim工具使用总结
  • OpenCV中的矩阵操作
  • WSL Linux 子系统download
  • redis过期删除、内存淘汰、双写一致性---java
  • 铁路部门:确保沿线群众安全,焦柳铁路6个区段将陆续安装防护栅栏
  • 广西壮族自治区党委政法委副书记李文博接受审查调查
  • 观众走入剧院空间,人艺之友一起“再造时光”
  • 三大股份制银行入局AIC,一级市场再迎“活水”
  • “影像上海”中的自媒体影像特展:无论何时,影像都需要空间
  • 武汉旅游体育集团有限公司原党委书记、董事长董志向被查