- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法第五章好赵玉兰清华大学出版社
第5章 集合与查找 5.1 集合 5.2 具有Merge、Find的ADT集合 5.3 静态查找 5.4 哈希表 5.5 二叉查找树 5.6 平衡二叉查找树 5.7 B 树 5.1 集合 ADT集合 集合是成员(对象或元素)的一个群集。集合中的成员可以是原子(单元素),也可以是集合 集合的成员必须互不相同,且一般是无序的,但在表示它时,常常写在一个序列里 在算法与数据结构中所遇到的集合,其单元素通常是整数、字符、字符串或指针,且同一集合中所有成员具有相同的数据类型 例,colour = { red, orange, yellow, green, black, blue, purple, white } 集合上最基本的操作有求集合的并、交、差等 5.1 集合 ADT Set { Data 同属一个结构S的一组记录:s1,s2,…,集合的成员互不 相同,成员次序无关紧要。成员之间的关系是一种完全松 散的关系。 Operations Constructor Process:初始化当前集合为空集 Union //并集运算 Input:集合A Process:求当前集合与集合A的并集B Output:集合B 5.1 集合 Intersection //交集运算 Input: 集合A Process: 求当前集合与集合A的交集B Output: 集合B Different //差集运算 Input: 集合A Process: 求当前集合与集合A的差集B Output: 集合B Assignment //赋值运算 Input: 集合A Process: 将集合A赋值给当前集合 Equality //等价性比较 Input: 集合A Process: 当前集合与集合A进行等价性比较 Output: 若等价,则返回true,否则返回false 5.1 集合 Member //成员运算 Input: 元素x Process: 判断x是否属于当前集合 Output: 若x属于当前集合,则返回true,否则返回false Insert //插入运算 Input: 元素x Process: 将元素x插入到当前集合中。 Delete //删除运算 Input: 元素x Process: 将元素x从当前集合中删除 } //Set 5.1 集合 用位向量实现集合 当所讨论的集合都是全集合{1,2,…,N}的子集,而且N是一个不大的固定整数时,可以用位向量来实现集合 5.1 集合 用位向量定义的集合类 class BitSet { int setsize; //setsize是全集的长度, int arraysize; //arraysize是位向量所需的无符号整型单元数 unsigned int *v; //位向量 int ArrayIndex(T x) { //确定元素x在位向量v中的下标,T为int或long return x / (sizeof(unsigned int)*8); } unsigned int BitMask(T x) { //位屏蔽函数 return 1((x-1) % (sizeof(unsigned int)*8); } 5.1 集合 public: BitSet(int size); //初始化为空集 BitSet Union(BitSet x); //并集运算 BitSet Intersection(BitSet x); //交集运算 BitSet Different(BitSet x); //差集运算 void Assignment(BitSet x); //将集合A赋值给当前对象 bool Equalit
文档评论(0)