图的储存方式,链式前向星最简单实现方式 (边集数组)
时间:2022-07-28
本文章向大家介绍图的储存方式,链式前向星最简单实现方式 (边集数组),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对于图来说,储存方式无非就是邻接矩阵、邻接表,今天看了看链式前向星的储存方式,说来说去不还是链表,是一种链表的简单的实现方式,还是比较好理解的。看他们写个结构体,个人不喜欢,没必要,也嫌麻烦,换一种更常见的方法。
#define maxn 10010
//定义顶点个数,个人不太习惯用const int ,因为const int 会开空间,占空间是一个原因,第二是因为C++ MinGW 的原因容易在使用中出问题,被坑不止一次,可能是非洲人
int tot=0;//图储存空间的假指针
int head[maxn];//表头,用于存图的的左端点
int next[maxn*100];//链式前向星的精髓,对于一个左端点他的右端点,用链式存储,一会有图解。
int ege[maxn*100];//储存边权
int ver[maxn*100];//储存右端点
void add(int x,int y,int e) //建图,在图中添边
{
ver[tot++]=y;
next[tot]=head[x];
ege[tot]=z;
head[x]=tot;
//如果是无向图可以在这里反向添边,也可以在使用时,反向使用一边,例如最短路松弛操作
}
for(int i=head[x];i;i=next[i]) //遍历以X为左端点的边
{
int L=x; // 左端点
int R=ver[i]; //右端点
int eg=ege[i]; //权值
}
思想很简单,next放的是一条链的伪指针,指向同为x1右端点的下一个坐标,即数组下标。ege,ver,实在数组下标中把需要的信息存储,一个是右端点另一个是权值,如果数组下标比成地址,next就是指针,指向这个点的信息的指针。
【边集数组】
边集数组是由两个一维数组构成,一个是存储顶点的信息,另一个是存储边的信息,这个边数组每个数据元素由一条边的起点下标(begin),终点下标(end)和权(weight)组成。
所以链式前向星,也是一种边集数组。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel 实现根据字段不同值做不同查询
- php实现获取近几日、月时间示例
- PHP+redis实现微博的拉模型案例详解
- PHP实现微信申请退款功能
- Laravel+Intervention实现上传图片功能示例
- 关于laravel框架中的常用目录路径函数
- Java byte数组操纵方式代码实例解析
- php桥接模式应用案例分析
- PHP设计模式之中介者模式(Mediator Pattern)入门与应用案例详解
- laravel 出现command not found问题的解决方案
- PHP怎么搭建百度Ueditor富文本编辑器
- 使用composer命令加载vendor中的第三方类库 的方法
- PHP批斗大会之缺失的异常详解
- Laravel 6.2 中添加了可调用容器对象的方法
- php实现微信企业转账功能