文档详情

C++的集合类型.pdf

发布:2015-08-10约7.18千字共5页下载文档
文本预览下载声明
第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{//由链表
显示全部
相似文档