中国药科大学:《数据结构》课程PPT教学课件(讲稿)第七章 集合与搜索的基本概念

第七章集合与搜索 集合及其表示 渣集 静态搜索表 u二叉搜索树 AVL树
◼ 集合及其表示 ◼ 并查集 ◼ 静态搜索表 ◼ 二叉搜索树 ◼ AVL树

集合及其表示 集合基本概念 集合是成员(对象或元素)的一个群集。集 合中的成员可以是原子单元素),也可以 是集合。 n集合的成员必须互不相同。 n在算法与数据结构中所遇到的集合,其 单元素通常是整数、字符、字符串或指 针,且同一集合中所有成员具有相同的 数据类型
集合基本概念 集合及其表示 ◼ 集合是成员(对象或元素)的一个群集。集 合中的成员可以是原子(单元素),也可以 是集合。 ◼ 集合的成员必须互不相同。 ◼ 在算法与数据结构中所遇到的集合,其 单元素通常是整数、字符、字符串或指 针,且同一集合中所有成员具有相同的 数据类型

colour=f red, orange, yellow, green, black, blue, purple, white j name={“An”,“Cao”,“Liu”,“Ma”, Peng”,“wang”," zhang”} 集合中的成员一般是无序的,但在表示 它时,常写在一个序列里。 常设定集合中的单元素具有线性有序关 系,此关系可记作“<”,表示“优先 于 整数、字符和字符串都有一个自然线性 顺序。指针也可依据其在序列中安排的 位置给予一个线性顺序
colour = { red, orange, yellow, green, black, blue, purple, white } name = { “An”, “Cao”, “Liu”, “Ma”, “Peng”, “Wang”, “zhang” } ◼ 集合中的成员一般是无序的,但在表示 它时,常写在一个序列里。 ◼ 常设定集合中的单元素具有线性有序关 系,此关系可记作“<”,表示“优先 于”。 ◼ 整数、字符和字符串都有一个自然线性 顺序。指针也可依据其在序列中安排的 位置给予一个线性顺序

A B A B A B A∪B或A+B A∩B或AxB A-B 集合(Se的抽象数据类型 template class Set i Set (int MaxSetsize): MaxSize(MaxSetsize); void MakeEmpty (Set& s); int AddMember(Set& S, const Type x); int DelMember (Set& S, const Type& x);
集合(Set)的抽象数据类型 template class Set { Set (int MaxSetSize) : MaxSize(MaxSetSize); void MakeEmpty (Set& s); int AddMember (Set& s, const Type x); int DelMember (Set& s, const Type& x); AB 或 A+B AB 或 AB A-B A B A B A B

void Assign (Set& sl, Set& s2); void Union(Set& sl, Set& s2) void Intersection (Set&sl, set& s2); void Difference (Set&sl, set& s2) int Contains(Set& S, const Type& x); int Equal(Set&sl, Set& S2); int SubSet(Set& sl, Set& s2);
void Assign (Set& s1, Set& s2); void Union (Set& s1, Set& s2); void Intersection (Set& s1, Set& s2); void Difference (Set& s1, Set& s2); int Contains (Set& s, const Type& x); int Equal (Set& s1, Set& s2); int SubSet (Set& s1, Set& s2); }

用位向量实现集合抽象数据类型 当集合是全集合{0,1,2,…,n}的一个子集, 且n是不大的整数时,可用位(0,1)向量来实 现集合。 当全集合是由有限的可枚举的成员组成的 集合时,可建立全集合成员与整数0,1, 2,.一一对应关系,用位向量来表示该集 合的子集
用位向量实现集合抽象数据类型 ◼ 当集合是全集合{ 0, 1, 2, …, n }的一个子集, 且 n是不大的整数时,可用位(0, 1)向量来实 现集合。 ◼ 当全集合是由有限的可枚举的成员组成的 集合时,可建立全集合成员与整数 0, 1, 2, …的一一对应关系,用位向量来表示该集 合的子集

集合的位向量 bit Vector)类的定义 #include const int Defaultsize=100 class set i private int* bit Vector int maxSize public. Set( int MaxSetsize= DefaultSize ) Seti delete[i bit vector;)
集合的位向量(bit Vector)类的定义 #include const int DefaultSize = 100; class Set { private: int * bitVector; int MaxSize; public: Set ( int MaxSetSize = DefaultSize ); ~Set ( ) { delete [ ] bitVector; }

void MakeEmpty (i for( int 1=0; 1=o&&x< maxSize bit vector区x]:-1;} int AddMember( const int x ) int DelMember( const int x ) Set& operator =( Set& right ) Set& operator + Set& right )
void MakeEmpty ( ) { for ( int i = 0; i = 0 && x < MaxSize ? bitVector[x] : -1; } int AddMember ( const int x ); int DelMember ( const int x ); Set& operator = ( Set& right ); Set& operator + ( Set& right );

Set& operator*( Set& right ) Set& operator-( Set& right ) int Contains( const int x )3 int SubSet( Set& right ) int operator =-( Set& right )3 使用示例 Set sl s2. s3 s4.s5: int index, equal for(intk=0;k<10;k++)/集合赋值 &sl. AddMember( k); s2. AddMember(k+7);) ∥s1:{0,1,2,…,9},s2:{7,8,9,…,16}
Set& operator * ( Set& right ); Set& operator - ( Set& right ); int Contains ( const int x ); int SubSet ( Set& right ); int operator == ( Set& right ); }; 使用示例 Set s1, s2, s3, s4, s5; int 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与2的并{0,1,,16} s4=s1*s2;求s1与S2的交{7,8,9 s5=s1-s2;/s1与2的差{0,1,……,6} ∥s1:{0,1,2,…,9} index=sl. Subset(s4);/4在s1中首次匹配 cout<< index<<end;∥置, index=7 ∥s1:{0,1,2,3,4,5,6,7,8,9} s4:{7,8,9} equal=Sl== S2 ∥集合s1与s2比较相等 cout<< equal<<endl;∥0,两集合不等
s3 = s1+s2; //求s1与s2的并 { 0, 1, …, 16 } s4 = s1*s2; //求s1与s2的交{ 7, 8, 9 } s5 = s1-s2; //求s1与s2的差{ 0, 1, …, 6 } // s1 : { 0, 1, 2, …, 9 } index = s1.SubSet ( s4 ); //s4在s1中首次匹配 cout << index << endl; //位置,index = 7 // s1 : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } // s4 : { 7, 8, 9 } equal = s1 == s2; //集合s1与s2比较相等 cout << equal << endl; //为0, 两集合不等
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第六章 树与森林的概念讲解.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第五章 递归与广义表的知识概念讲解.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第四章 栈和队列的知识概论.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第三章 链表之(单链表的类定义).ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第二章 数组的定义和初始化知识讲解.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第十章 索引与散列结构知识讲解.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第一章 绪论.ppt
- AUTO CAD205中文教程 教学课件讲解.ppt
- 微机原理、汇编语言与接口技术:第四章 机器语言、汇编语言与高级语言.ppt
- 微机原理、汇编语言与接口技术:第六章 总线的基本概念.ppt
- 微机原理、汇编语言与接口技术:第八章 中断技术、DMA控制器及定时器/计数器.ppt
- 微机原理、汇编语言与接口技术:第五章 存储系统及半导体存储器.ppt
- 微机原理、汇编语言与接口技术:第二章 微机原理与接口技术微处理器.ppt
- 微机原理、汇编语言与接口技术:第九章 数、模和数、数模转换.ppt
- 微机原理、汇编语言与接口技术:第三章 微型计算机指令系统.ppt
- 微机原理、汇编语言与接口技术:第七章 输入输出总线接口技术.ppt
- 微机原理、汇编语言与接口技术:第一章 微型计算机的发展、应用及其分类.ppt
- 东北农业大学工程学院:《计算机集成制造技术》课程教学资源(PPT课件)计算机辅助制造概论.ppt
- 计算机应用基础_Killer Transitions README.rtf
- 计算机应用基础_KILLER Transitions Manual.rtf
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第八章 图的基本概念的知识讲解.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第九章 排序的基本概述.ppt
- 科学计算与 MATLAB语言——第一章 MATLAB概述与运算基础.pps
- 科学计算与 MATLAB语言——第二章 MATLAB程序设计.pps
- 科学计算与 MATLAB语言——第三章 Mat1ab的文件操作.pps
- 科学计算与 MATLAB语言——第四章 Matlab绘图功能.pps
- 科学计算与 MATLAB语言——第五章 MATLAB线性代数中的数值计算问题.pps
- 科学计算与 MATLAB语言——第六章数据处理方法与多项式.pps
- 科学计算与 MATLAB语言——第七章 MATLAB的符号计算.pps
- 科学计算与 MATLAB语言——第八章 MATLAB图形用 户界面设计.pps
- Linux实用教程——第一章 Linux的实用教程概况及安装.ppt
- Linux实用教程——第二章 Linux的常用命令.ppt
- Linux实用教程——第三章 Linux系统管理概述.ppt
- Linux实用教程——第四章 Linux网络基础.ppt
- Linux实用教程——第五章 Intranet服务器.ppt
- Linux实用教程——第六章 Internet应用服务器的配置.ppt
- Linux实用教程——第七章 Web应用服务.ppt
- Linux实用教程——第八章 Linux网络安全基础知识.ppt
- Linux实用教程——第九章 Linux程序设计基础.ppt
- 广东工业大学:计算机操作系统 ——第一章 操作系统引论.ppt