C++的集合类型.pdf
文本预览下载声明
第3 卷 第 1 期 辽 宁 高 职 学 报 Vol.3, No. 1
2001 年 2 月 LIAONING HIGHER VOCATIONAL TECHNICAL INSTITUTE JOURNAL Feb. 2001
文章编号:1009—7600 (2001)01—0036—05
C++ 中增加集合类型
闫会昌,王宏亮,徐 宏
(抚顺职业技术学院,辽宁抚顺:113006)
摘 要:本文以链表作为集合的存储结构,较详细地定义了C ++中的集合类型,并重载了集合
运算的运算符,使集合变量可以象普通变量一样应用在C ++程序中。
关键词:集合;类型;类类型;运算符;重载
中图分类号:TP 311 文献标识码:A
集合是数学中最基本的概念,是现代数学的重要基础,并且已经深入到各种科学与技术的领
域中。例如,在开关理论、有限状态机、形式语言等领域中,都卓有成效地应用了集合论。
计算机在各个领域的应用越来越广泛。在当今流行并具代表性的C++中,并没有集合类型,
这不能不说是一件憾事。本文将讨论如何在C++中定义集合类型,并给出几个基本的集合运算。
一、集合的基本概念
1.集合:是指具有某些共同性质的元素构成的整体。
2..集合的元素或成员:属于给定集合的任何客体。
3.集合的基类型:在集合论中,并不要求集合的元素都属于相同类型。为了使问题简化,并
使集合类型能有效地实现,规定集合的元素必须取自某个顺序类型的值域,这个顺序类型称之为
集合的基类型。
4.集合类型的逻辑结构:集合只表示由哪些元素组成,且无重复,各元素之间并无邻接关系
要求。
二、集合的基本运算
集合运算有并、交、差、相等和包含等运算。设R和S为具有相同类型的元素集合,其基本
运算的定义如下:
1.集合的并运算:为R与S中所有元素的总和,且每个元素只出现一次(如图1)。
2.集合的差运算:从R中去掉属于S的元素构成的集合(如图2)。
3.集合的交运算:由集合R与S所共有的全部元素构成的集合(如图3)。
4.集合相等:R与S中的全部元素都相同。
5.集合元素的检验:某一元素是否在一个集合中出现。
图1.并运算 图2.差运算 图3.交运算
三、在C++ 中集合类型存储结构的描述
根据集合的逻辑结构与运算要求,可以采用顺序存储结构,也可采用链式存储结构。因顺序
存储结构要事先规定好集合的元素个数,并且在删除数据(差运算)时要移动大量数据,故本文
采用链式存储,其效率较高。
收稿日期:2000—12—18
第 1 期 闫会昌,王宏亮,徐 宏:C++中增加集合类型 37
1. 结点结构的定义:
struct Element{//结点结构类型
int val; //数据域
Element *next;//指针域
};
2. 链表类类型的定义:
class List{//链表类类型
protected:
Element *elems;//结点为保护成员
public: //链表的公共成员函数
List(){elems=NULL;}//链表的构造函数
~List(); //链表的析构函数
//结点删除Delete和插入Insert虚函数,在派生类中可被重新定义
virtual bool Delete(int);
virtual bool Insert(int);
bool in(int);//结点查找函数
};
3. 由链表类继承的集合(Set)类型的定义
class Set:public List{//由链表
显示全部