数据结构——第五讲、树(下)(3)
来源:互联网 发布:linux .sh 里面的函数 编辑:程序博客网 时间:2024/06/05 09:29
5.3 集合及其运算
把一个个的元素看成一个个的集合,如果两个元素之间联通,那么就把这两个集合并起来。
集合我们只关心两个问题,并集和查找,查找就是找到元素所在的那个集合,为此,我们用树来存储集合,用树的根表示该集合,求并集的时候只需要把一棵树接在另一个树上即可。
用树的结构表示集合,在计算机中,我们可以用结构数组来存储这种树,Parent表示该节点的父节点在数组中的位置,根节点的Parent为-1,注意,一个数组可以存好几个不同的集合,也可以只有一个集合。
typedef struct { ElementType Data; int Parent;}SetType;
查找,输入结构数组和要查找的元素,返回元素所在的集合(即该集合树的根节点)
int Find(ElementType x, SetType S[]){ int i; for(i = 0; i < MaxSize && S[i].Data != x; i++); if(i >= MaxSize)return -1; //此处的条件为大于等于0,其实也可以用不等于-1,但是因为后面的并操作会用 //根节点的Parent值存储别的信息,所以不用不等于-1 for(;S[i].Parent >= 0;i = S[i].Parent); return i;}
并,parent值用集合元素个数的负值表示(负值小的个数多)
void Union(SetType S[], ElementType x1, ElementType x2){ int root1,root2; root1 = Find(x1,S); root2 = Find(x2,S); if(root1 != root2){ if(S[root1].Parent < S[root2].Parent){ S[root1].parent += S[root2].parent; S[root2].parent = root1; } else{ S[root2].parent += S[root1].parent; S[root1].parent = root2; } }}
阅读全文
0 0
- 数据结构——第五讲、树(下)(3)
- 数据结构——第五讲、树(下)(1)
- 数据结构——第五讲、树(下)(2)
- 陈越《数据结构》第五讲 树(下)
- 数据结构——第八讲、图(下)(1)
- 数据结构——第三讲、树(上)(3)
- 读书笔记(第五讲)
- 数据结构——第三讲、树(上)(1)
- 数据结构——第三讲、树(上)(2)
- 数据结构——第四讲、树(中)(1)
- 数据结构——第四讲、树(中)(2)
- 数据结构——第一讲、基本概念(3)
- 数据结构——第二讲、线性结构(3)
- 数据结构——第六讲、图(上)(1)
- 数据结构——第六讲、图(上)(2)
- 数据结构——第七讲、图(中)(1)
- 数据结构——第一讲、基本概念(1)
- 数据结构——第一讲、基本概念(2)
- JavaScript里类的相关知识
- 后缀数组和高度数组 模板及应用
- ROS下orb-slam2 单目 (二)
- Factorization Machines 学习笔记(二)模型方程(转)
- CSS(九) 设置表格样式
- 数据结构——第五讲、树(下)(3)
- Python3 模块相关及输入输出模式
- Android 5.X 新特性详解(五)Toolbar和Notification
- 03Redis数据类型之List类型
- 兴趣使然,冒泡、选择排序结合回调函数写的小程序,望多留言评论,本人萌新,多提意见,虚心采纳,谢谢
- PowerDesigner16 用例图
- Factorization Machines 学习笔记(三)回归和分类(转)
- POJ 3041 Asteroids 笔记
- OpenCV自学笔记29. lsd直线检测算法(未完)