- 博客(4)
- 收藏
- 关注
原创 图——一种多对多的数据结构
图是一种描述多对多数据关系的数据结构,线性表和树都可以看作是图的一种特殊情况。图中包含以下元素:1.一组定点:通常用V(Vertex)表示顶点的集合。2.一组边:通常用E(Edge)表示边的集合,便是顶点对(v,w)∈E,其中v,w∈V。有向边表示从v指向w的边(单行线)。不考虑重边和自回路。数据名称:图(Graph)数据对象集:G(V,E)由一个非空的有限定点集合V,和一个有限边集合E组成。操作集:·Graph Create():初始化并返回一个空图。
2022-11-24 19:37:46 726 1
原创 并查集相关
已知有十台电脑{1,2,3,4,5,6,7,8,9,10},任给其中两台电脑,我们该如何判断这两台电脑有没有形成连接?解决办法:我们可以将这十台电脑看做10个集合{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}。将两台电脑连接起来的行为可以抽象为将两台电脑对应的集合合并,判断两台电脑是否连接只需要看他们是否属于同一个集合就可以了。
2022-11-23 17:05:13 178
原创 哈夫曼树和哈夫曼编码
带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子节点带有权值wkw_kwk,从根结点到每个叶子结点的路径长度为lkl_klk,则每个叶子结点的带权路径长度之和就是:WPL=∑i=1nwklk∑i=1nwklk。这里的带权路径长度就可以理解为引言里面提到的字符出现的频率。哈夫曼树:WPL最小的树。
2022-11-23 09:18:43 243
原创 堆的概念、结构、插入、删除、和建立。
计算机处理数据需要按照一定的顺序,最简单的顺序就是先来后到,按时间顺序来处理数据。但有时,计算机需要处理的数据有优先级别。比如,打印一张纸排在了发射火箭前面,显然发射火箭比打印一张纸要重要的多,但如果按照时间先后顺序来处理的话,就会先打印一张纸再发射火箭,这显然是不合理的。这时我们就需要一种优先队列(Priority Queue)来应对这种情况。采用数组,链表,有序数组和无序数组的形式都可以实现优先队列,但是都各有不足。于是考虑使用二叉树的形式来实现优先队列,这就有了堆的概念。
2022-11-21 20:30:12 298 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人