【图论C++】链式前向星(图(树)的存储)

c 复制代码
/**
 * @file            
 * @author          jUicE_g2R(qq:3406291309)------------彬(bin-必应)
 *						一个某双流一大学通信与信息专业大二在读	
 * 
 * @brief           一直在竞赛算法学习的路上
 * 
 * @copyright       2023.9
 * @COPYRIGHT			 原创技术笔记:转载需获得博主本人同意,且需标明转载源
 * @language        C++
 * @Version         1.0还在学习中  
 */
  • UpData Log👆 2023.9.25 更新进行中
  • Statement0🥇 一起进步
  • Statement1💯 有些描述是个人理解,可能不够标准,但能达其意

技术提升站点

链式前向星

  • 链式前向星 建立在 邻接表 的基础上,从 2结点 开始记录(只画了部分部分):
  • 根据 邻接表 建立 链式前向星存图

h e a d u headu headu :记录 u节点 的 第一个邻居节点 的存储编号

i i i :存储编号

e d g e i . t o edgei.to edgei.to :u节点 的邻居节点(编号)

e d g e i . n e x t edgei.next edgei.next :记录 u节点 下一个邻居节点 的存储编号

(上图与下面的测试无关)

模拟存储过程

c 复制代码
//test:手动模拟数据存储过程,假设: 存入边 2-1 2-3 2-4 2-5
//存入2-1
edge[0].to=1, edge[0].next=head[2]=-1, head[2]=0;
i		0
to		1
next	-1
//存入2-3
edge[1].to=3, edge[1].next=head[2]=0, head[2]=1;
i		0	1
to		1	3
next	-1	0
//存入2-4
edge[2].to=4, edge[2].next=head[2]=1, head[2]=2;
i		0	1	2
to		1	3	4
next	-1	0	1
//存入2-5
edge[2].to=5, edge[3].next=head[2]=2, head[2]=3;
i		0	1	2	3
to		1	3	4	5
next	-1	0	1	2
//2结点的边存储完成,head[2]=3

代码实现

c 复制代码
const int N=1e5;
vector<int> head(N,-1);
int cot=0;
struct Edge{
    int to,next;
    //int weight;
    Edge():to(-1), next(-1){}				    //初始化为无邻居节点
    //Edge(int to, int w):to(to), weight(w);	//对 结构体的成员 进行赋值 的构造函数
} edge[N];
void Add_Edge(int u, int to, int w){
    edge[cot].to=to;
    //edge[cot].weight=w;
    edge[cot].next=head[u];                     //记录 上一个邻居节点 的 存储编号
    head[u]=cot++;                              //当前 邻居节点 的 存储编号,以便下一个邻居节点的访问
}
相关推荐
JieE2123 小时前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2121 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack201 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树1 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
JieE2122 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2122 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术2 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦2 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
clint4562 天前
C++进阶(1)——前景提要
c++