ufsets.h
来自「清华大学计算机系数据结构课程教材《数据结构 用面向对象方法和C++描述》(殷人昆」· C头文件 代码 · 共 39 行
H
39 行
#ifndef UFSETS
#define UFSETS
const int DefaultSize2 = 10;
class UFSets { //集合中的各个子集合互不相交
public:
UFSets (int sz = DefaultSize2); //构造函数
~UFSets() {delete []parent; } //析构函数
UFSets& operator = (UFSets& R); //操作符重载,实现集合赋值
void Union (int Root1, int Root2); //子集合并
//接受两个参数,为需要合并的两个节点的序号,不返回值。
int Find (int x); //查找x的根
//接受一个参数,为int类型,表示需要查找的节点序号
//返回一个int类型值,表示根的序号
void WeightedUnion (int Root1, int Root2);
//改进例程:压缩高度的合并算法
//与Union类似,接受两个参数,为需要合并的两个节点的序号,不返回值。
int CollapsingFind (int i);
//使用折叠规则的搜索算法
//同Find函数:
//查找x的根
//接受一个参数,为int类型,表示需要查找的节点序号
//返回一个int类型值,表示根的序号
void output(); //自定义函数,用于输出并查集目前状态。
//输出格式为,节点序号:父节点序号(若为根节点,则输出节点个数)
private:
int *parent; //集合元素数组(双亲表示)
int size; //集合元素的数目
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?