系列文章目录
文章目录
前言
此文介绍了集合和字典的一些知识点。
一、集合
1.集合的概念
基本概念:
①集合是一些互不相同的元素的无序汇集;
②集合中的元素也称为该集合的成员;
③集合中的成员可以使一个原子(单元素),也可以是一个集合。
数据结构中集合的特殊性:
①限制为有穷集;
②所有元素都是统一类型;
③元素之间存在一个小于关系(有序集)。
2.集合的定义
①列举法:定义一个有穷集,例如colour={red,orange,yellow,green,black,blue,purple,white}
②谓词描述法: { x ∣ P ( x ) } \left\{ {x|P\left( x \right)} \right\} {
x∣P(x)}表示所有满足条件P的元素 x x x的集合。
③集合的大小:集合中所包含的元素的个数。
3.集合的主要运算
二、字典
1.字典的概念
字典是一些元素的集合,每个元素有一个称作关键码(key)的域,不同的元素的关键码互不相同。
在讨论字典抽象数据类型时,把字典定义为<名字-属性>对的集合。
2.字典的抽象数据类型
有关字典的操作有如下几种:
①确定一个指定的名字是否在字典中;
②搜索出该名字的属性;
③修改该名字的属性;
④插入一个新的名字及其属性;
⑤删除一个名字及其属性。
//代码来自殷人昆《数据结构:用面向对象方法与C++语言描述》
const int DefualtSize = 26;
enum bool{
false,true}
template<class Name,class Attribute>
class Dictionary{
//对象:一组<名字-属性>对,其中,名字是唯一的
public:
Dictionary(int size = DefualtSize);
//建立一个容量为size的空的字典
bool Member(Name name);
//若name在字典中,则返回true,否则返回0
Attribute *Search(Name name);
//若name在字典中,则返回指向相应Attr的指针,否则返回0
void Insert(Name name,Attribute attr);
//若name在字典中,则修改相应<name Attr>对的attr项,否则插入<name Attr>到字典中
void Remove(Name name);
//若name在字典中,则在字典中删除相应的<name Attr>对
}
在字典的所有操作中,最基本的只有三种:Search、Insert、Remove。
字典的3种组织方式有:线性表、跳表(略)和散列表。下面分开记录这三种组织方式
3 线性表
字典可以保存在线性序列 ( e 1 , e 2 , ⋯ ) \left( { {e_1},{e_2}, \cdots } \right) (e1,e2,⋯)中,其中 e i { {e_i}} ei