对于图的储存的总结(一)
来源:互联网 发布:淘宝网男花保 套装 编辑:程序博客网 时间:2024/06/05 00:16
经过两个上午的课,我知道了一些关于图的储存的知识,例如链式前向星(本人蒟蒻)等,然后我必须认真的总结。
(一)邻接矩阵:
这东西挺简单,很纯的用bool数组存储关系。就是用一个bool型的数组储存一个点与另一个点的连接关系,通俗一点就是点i和点j之间有没有边。
具体思路:用一个二维bool数组记录点i与点j之间的关系,如果有边赋值为真,否则为假(或反之)。
由于代码简单,这里就不给出了。
(二)邻接表:
一般这个很让人懵,关键是它违反了我的惯性思想
它的思想是:用n个链表来储存关系,第i个链表储存的是与点i相连的点
但由于链表太繁琐了,在OI中特别容易出错,一般不推荐用链表
所以我们一般使用数组模拟链表!!!!
这是个啥操作嘞?
具体是这样的——首先用一个link数组,link[i]代表与点i直接相连的所有点中最后被记录到的点在e数组中的位置
然后用一个e数组,是结构体,这个结构体有两个元素——t与next
t记录的是这个点的编号
next记录的是与这个点的同组的点的下一个点的位置 这个next你可能不懂什么意思
什么是同组呢?同组就是它们与同一个点相连,那么其实就是点i比点i.next迟记录到一点。
理解了各种变量的意思,就是储存了
首先你要输入两个点x与y(可能还有边权值,在开个z保存就行了),给x的相连点中多开一个点就行了核心代码:
void ins(int xx,int yy){ e[++tt].x=yy; e[tt].next=lin[xx];lin[xx]=tt;}最后还有一个神奇的循环枚举:
for (int i=lin[x];i;i=e[i].next)这个循环是用于枚举与点i相连的点的。
完结撒花
- 对于图的储存的总结(一)
- 对于矩阵类型的一些算法的总结(一)
- 对于UI控件学习的总结(一):懒加载
- 图的储存
- 图的储存 模板
- 图的储存方式
- 图的储存结构
- 图的储存
- 关于一次线上事故总结,以及对于mysql索引的总结(序言一)
- 线性表的顺序储存结构(向量 )(一)
- 对于编程的总结
- 对于异常的总结
- 对于 gevent 的总结
- 对于poll的总结
- 对于algorithm101的总结
- 对于algorithm102的总结
- 对于检索的总结
- 对于背包的总结
- vmware10新建redhat7系统操作教程
- Java阶段学习心得
- 关于fragment和activty的通信个人的总结浅谈
- 自定义view继承LinearLayout实现购物车数量的加减
- 数据库视频(七)
- 对于图的储存的总结(一)
- python开头两行code
- Java String的常用方法
- 实验测试《C++ Primer》第五版——第七章 类
- mysql存储过程简介(仅供参考)
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O(尹成清华毕业生)
- Lua 元表简介
- Golang中位运算的详细理解
- 大数据正式4