【算法与数据结构】——链式前向星
2021/7/18 22:09:54
本文主要是介绍【算法与数据结构】——链式前向星,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
链式前向星在我写的【算法与数据结构】——离散化、拓扑排序以及最短路算法的堆优化这个里面有提到,但是当时描述的比较简单,现在印象有所加深,在详细描述一下。
总的来说链式前向星跟邻接表有些相似,不过邻接表是将与头结点所存储的顶点相连的顶点的值存到相同的结构体中,将他们连接在一起。而链式前向星是将一个顶点所连接的顶点的值放到一个数组里。
原理
一般会需要如下内容
存储边信息的结构体
struct Edge{ int to; //存储与a顶点相连的顶点 int val; //存储边的权值 int next; //下一个与a顶点相连的顶点
需要两个数组
Edge edge[];//存储边的数组 int head[a];//存储a顶点对应边的下标
实现
有向图
for(int i=0;i<vexnumber;i++) { head[i]=-1; } cin>>edgenum; //由于是有向图,只需要建一个边 for(int i=0;i<edgenum;i++) { int from,to,v; cin>>from>>to>>v; edge[i].to=to; edge[i].val=v; edge[i].next=head[from];//类似链表头插 head[from]=i; }
无向图,两个方向都要存储
for(int i=0;i<vexnumber;i++) { head[i]=-1; } cin>>edgenum; //由于是无向图,要正向反向都建边 for(int i=0;i<2*edgenum;i+=2) { int from,to,v; cin>>from>>to>>v; //第一条 edge[i].to=to; edge[i].val=v; edge[i].next=head[from];//类似链表头插 head[from]=i; //第二条 edge[i+1].to=from; edge[i+1].val=v; edge[i+1].next=head[to]; head[to]=i+1; }
这篇关于【算法与数据结构】——链式前向星的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用