⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufsets.h

📁 清华大学计算机系数据结构课程教材《数据结构 用面向对象方法和C++描述》(殷人昆主编)的类库(书中程序的源代码)
💻 H
字号:
#ifndef UFSETS
#define UFSETS
const int DefaultSize = 10;

class UFSets {							//集合中的各个子集合互不相交
public:
     UFSets (int sz = DefaultSize);		//构造函数
	 ~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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -