《数据结构》课程教学资源(PPT课件讲稿)第六章 集合与字典

第六章集合与字典 集合及其表示 并查集与等价类 字典 散列
第六章 集合与字典 • 集合及其表示 • 并查集与等价类 • 字典 • 散列 1

集合及其表示 集合基本概念 集合是成员(元素)的一个群集。集合中的成 员可以是原子单元素),也可以是集合 集合的成员必须互不相同。 在算法与数据结构中所遇到的集合,其单元 素通常是整数、字符、字符串或指针,且同 集合中所有成员具有相同的数据类型。 19: colour= red, orange, yellow, green, black, blue, purple, white j
集合及其表示 • 集合是成员(元素)的一个群集。集合中的成 员可以是原子(单元素),也可以是集合。 • 集合的成员必须互不相同。 • 在算法与数据结构中所遇到的集合,其单元 素通常是整数、字符、字符串或指针,且同 一集合中所有成员具有相同的数据类型。 • 例:colour = { red, orange, yellow, green, black, blue, purple, white } 2 集合基本概念

集合中的成员一般是无序的,但在表示 它时,常写在一个序列里。 常设定集合中的单元素具有线性有序关 系,此关系可记作“<”,表示“优先 于 整数、字符和字符串都有一个自然线性 顺序。指针也可依据其在序列中安排的 位置给予一个线性顺序
• 集合中的成员一般是无序的,但在表示 它时,常写在一个序列里。 • 常设定集合中的单元素具有线性有序关 系,此关系可记作“<”,表示“优先 于”。 • 整数、字符和字符串都有一个自然线性 顺序。指针也可依据其在序列中安排的 位置给予一个线性顺序。 3

A B A B A B AUB或A+BA∩B或A×B A-B 集合(Set)的抽象教据类型 template lass set public virtual Set(=0 构造函数 virtual makeEmpty=0;∥置空集合 virtual bool addMember (const tx)=0;
集合(Set)的抽象数据类型 template class Set { public: virtual Set() = 0; //构造函数 virtual makeEmpty() = 0; //置空集合 virtual bool addMember (const T x) = 0; 4 AB 或 A+B AB 或 AB A-B A B A B A B

virtual bool delmember(const Tx)=0; virtual Set intersect With (set&r)=0; /(集合的交运算 virtual Set union With(Set<>&r)=0; 集合的并运算 virtual Set difference from (Set&r)=o ′集合的差运算 virtual bool Contains(Tx)=0; virtual bool subSet(Set&r)=0; virtual bool operator==(Set&r)=0; 判集合是否相等
virtual bool delMember (const T x) = 0; virtual Set intersectWith (Set& R) = 0; //集合的交运算 virtual Set unionWith (Set& R) = 0; //集合的并运算 virtual Set differenceFrom (Set& R) = 0; //集合的差运算 virtual bool Contains (T x) = 0; virtual bool subSet (Set& R) = 0; virtual bool operator == (Set& R) = 0; //判集合是否相等 }; 5

用位向量实现集合抽象数据类型 当集合是全集合{0,1,2,…,n}的一个子集 且n是不大的整数时,可用位(,1)向量来实 现集合。 当全集合是由有限个可枚举的成员组成时,可 建立全集合成员与整数0,1,2,的一一对应 关系,用位向量来表示该集合的子集。 一个二进位有两个取值0,分别表示在集合 与不在集合。如果采用16位无符号短整数数组 bit vector作为集合的存储,就要考虑如何求 出元素i在 bit vector数组中的相应位置
用位向量实现集合抽象数据类型 • 当集合是全集合 { 0, 1, 2, …, n } 的一个子集, 且 n 是不大的整数时,可用位(0, 1)向量来实 现集合。 • 当全集合是由有限个可枚举的成员组成时,可 建立全集合成员与整数 0, 1, 2, …的一一对应 关系,用位向量来表示该集合的子集。 • 一个二进位有两个取值1或0,分别表示在集合 与不在集合。如果采用16位无符号短整数数组 bitVector[ ]作为集合的存储,就要考虑如何求 出元素 i 在bitVector数组中的相应位置。 6

集合的位向量( bit vector)类的定义 #include #include const int defaultsize =50 template class bitset i 用位向量來存储集合元素.集合元素的范围在0到 setSize-1之间。数组采用16位无符号短整数实现 public bitSet(int Sz= DefaultSize) 构造函数 bitset( const bitset&R);∥复制构造函数 bitset0{ delete[ Bit vector;}∥析构函数 unsigned short getmember( const tx);∥读取集合 元素ⅹ
集合的位向量(bit Vector)类的定义 #include #include const int DefaultSize = 50; template class bitSet { //用位向量来存储集合元素, 集合元素的范围在0到 //setSize-1之间。数组采用16位无符号短整数实现 public: bitSet (int sz = DefaultSize); //构造函数 bitSet (const bitSet& R); //复制构造函数 ~bitSet () { delete [ ]bitVector; } //析构函数 unsigned short getMember (const T x); //读取集合 元素x 7

void putMember(const Tx, unsigned short v);// 将值V送入集合元素ⅹ void make Empty ( i /置空集合 for (int 1=0; 1& operator=(const bitSet& ri; bitset& operator +(const bitSet& r bitset>& operator *(const bitSet&R) bitset& operator-(const bitset& r) bool Contains(const Tx); /x是否集合this的成员8
void putMember (const T x, unsigned short v); // 将值v送入集合元素x void makeEmpty () { //置空集合 for (int i = 0; i & operator = (const bitSet& R); bitSet& operator + (const bitSet& R); bitSet& operator * (const bitSet& R); bitSet& operator - (const bitSet& R); bool Contains (const T x); //判x是否集合this的成员 8

bool subset( bitsets&R);/判this是否R的子集 bool operator=(bitSet& r) /判集合this与R相等 friend istream& operator >>(istream& in, bitset& r) /入 friend ostream& operator &r) 出 private: int setsize /集合大小 int vector Size. ∥1位数组大小 unsigned short *bit vector /存储集合元素的位数组
bool subSet (bitSet& R); //判this是否R的子集 bool operator == (bitSet& R); //判集合this与R相等 friend istream& operator >> (istream& in, bitSet& R); //输入 friend ostream& operator & R); //输出 private: int setSize; //集合大小 int vectorSize; //位数组大小 unsigned short *bitVector; //存储集合元素的位数组 }; 9

使用示例 bitSetsl, S2, S3, S4, s5; bool index, equal for(intk=0;k<10;k++){/集合赋值 Sl. addMember(k) S2. addMember(k+7) s:④0,1,2,…,9},s2:{7,8,9,…,16} s3=sl+s2;/求s1与S2的并{0,1,…,16 s4=sls2;1求S1与S2的交{7,8,9} s5=s1-s2;/s1与S2的差{0,1,…,6}
使用示例 bitSet s1, s2, s3, s4, s5; bool index, equal; for (int k = 0; k < 10; k++) { //集合赋值 s1.addMember (k); s2.addMember(k+7); } //s1: {0, 1, 2, …, 9}, s2: {7, 8, 9, …, 16} s3 = s1+s2; //求s1与s2的并 {0, 1, …, 16} s4 = s1*s2; //求s1与s2的交 {7, 8, 9} s5 = s1-s2; //求s1与s2的差 {0, 1, …, 6} 10
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《网络安全 Network Security》课程教学资源(PPT课件讲稿)Lecture 01 Introduction.pptx
- 安徽理工大学:《汇编语言》课程教学资源(PPT课件讲稿)第四章 汇编语言程序格式.ppt
- 《C程序设计》课程电子教案(PPT课件讲稿)第二章 基本数据类型及运算.ppt
- 浪潮公司:并行程序、编译与函数库简介、应用软件的调优.ppt
- 南京大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 长春大学:《计算机应用基础》课程教学资源(PPT课件讲稿)第二章 操作系统.ppt
- 《C++语言基础教程》课程电子教案(PPT教学课件)教学资源(PPT课件)第2讲 C++语言基础.ppt
- 《网络安全 Network Security》教学资源(PPT讲稿)Topic 3 User Authentication.pptx
- 《数据结构》课程教学资源(PPT课件讲稿)第三章 栈和队列.ppt
- 中国水利水电出版社:《单片机原理及应用》课程PPT教学课件(C语言版)第2章 MCS-51单片机基本结构.ppt
- 电子科技大学:《Unix操作系统基础》课程教学资源(PPT课件)第一章 UNIX操作系统概述、第二章 UNIX使用入门.ppt
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第五章 存储器层次结构.ppt
- Data Mining Association Analysis——Basic Concepts and Algorithms Chapter 6 Introduction to Data Mining.ppt
- 《信息安全与管理》课程教学资源(PPT课件讲稿)第六章 公开密钥设施PKI.ppt
- 《计算机应用基础》课程教学资源(PPT课件讲稿)第一章 计算机基础知识.ppt
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,3rd edition)Chapter 5 Link Layer.ppt
- 西安电子科技大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第六章 存储器设计.pptx
- 《编译原理》课程教学资源(PPT课件讲稿)第五章 类型检查.ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 10 Query expansion.ppt
- 北京师范大学现代远程教育:《计算机应用基础》课程教学资源(PPT课件讲稿)第一章 计算机常识.ppt
- 华东理工大学:《Visual Basic程序设计教程》课程教学资源(PPT课件)第四讲 VB语言基础(运算符、函数和表达式).pps
- 《软件工程》课程教学资源(PPT课件讲稿)第4章 软件总体设计.ppt
- 《网络综合布线》课程教学资源(PPT讲稿)模块2 综合布线工程设计.ppt
- 数据库接口技术(PPT讲稿)开放式数据库联接 Open DataBase Connectivity——ODBC.ppt
- 《网络系统集成技术》课程教学资源(PPT课件讲稿)第六章 网络互联技术.ppt
- 清华大学出版社:《网络信息安全技术》教材电子教案(PPT课件讲稿)第2章 密码技术.ppt
- 湖南生物机电职业技术学院:《电子商务概论》课程教学资源(PPT课件)第六章 网上支付.ppt
- 《计算机组装与维修》课程电子教案(PPT教学课件)第一章 计算机系统维护维修基础.ppt
- 《Java Web应用开发基础》课程教学资源(PPT课件)第8章 EL、JSTL和Ajax技术.ppt
- Dynamic Pricing in Spatial Crowdsourcing:A Matching-Based Approach.pptx
- 计算机软件技术基础:《Visual Basic6.0 程序设计》课程教学资源(PPT课件)第1章 Visual Basic(VB)概述.ppt
- 贵州电子信息职业技术学院:常用办公技巧(PPT讲稿,主讲:刘忠华).ppt
- 东南大学:《C++语言程序设计》课程教学资源(PPT课件讲稿)Chapter 09 Classes A Deeper Look(Part 1).ppt
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Clustering Basics(主讲:赵钦佩).pptx
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第三章 数据链路层.ppt
- 上海交通大学:《网络安全技术》课程教学资源(PPT课件讲稿)比特币(主讲:刘振).pptx
- 中国科学技术大学:《并行算法实践》课程教学资源(PPT课件讲稿)上篇 并行程序设计导论 单元II 并行程序编程指南 第七章 OpenMP编程指南.ppt
- Online Minimum Matching in Real-Time Spatial Data:Experiments and Analysis.pptx
- 《数字图像处理 Digital Image Processing》课程教学资源(各章要求及必做题参考答案).pdf
- 北京航空航天大学:Graph Search & Social Networks.pptx