求助!!!关于一道C++的编程题!!! 25
定义如下集合类的函数成员classSET{int*elem;存放集合元素的动态内存intcount,total;目前元素个数及最大元素个数public:SET(intto...
定义如下集合类的函数成员
class SET{
int *elem; 存放集合元素的动态内存
int count, total;目前元素个数及最大元素个数
public:
SET(int total);
SET (const SET &);
int find(int val) const; //查找元素val, 若找到返回1, 否则返回0
int full(void)const;//集合满时返回1, 否则返回0
int empty(void)const;//集合空时返回1, 否则返回0
virtual SET operator+(const SET &);//集合的并集
virtual SET operator-(const SET &);//集合的差集
virtual SET operator*(const SET &);//集合的交集
virtual SET operator<<(int value);//增加一个元素
virtual SET operator>>(int value);//删除一个元素
virtual SET &operator+=(const SET &);//集合的并集
virtual SET &operator-=(const SET &);//集合的差集
virtual SET &operator*=(const SET &);//集合的交集
virtual SET &operator<<=(const SET &);//增加一个元素
virtual SET &operator>>=(const SET &);//删除一个元素
virtual SET &operator=(const SET &);
virtual ~SET (void);
} 展开
class SET{
int *elem; 存放集合元素的动态内存
int count, total;目前元素个数及最大元素个数
public:
SET(int total);
SET (const SET &);
int find(int val) const; //查找元素val, 若找到返回1, 否则返回0
int full(void)const;//集合满时返回1, 否则返回0
int empty(void)const;//集合空时返回1, 否则返回0
virtual SET operator+(const SET &);//集合的并集
virtual SET operator-(const SET &);//集合的差集
virtual SET operator*(const SET &);//集合的交集
virtual SET operator<<(int value);//增加一个元素
virtual SET operator>>(int value);//删除一个元素
virtual SET &operator+=(const SET &);//集合的并集
virtual SET &operator-=(const SET &);//集合的差集
virtual SET &operator*=(const SET &);//集合的交集
virtual SET &operator<<=(const SET &);//增加一个元素
virtual SET &operator>>=(const SET &);//删除一个元素
virtual SET &operator=(const SET &);
virtual ~SET (void);
} 展开
展开全部
//太多了.写不完啊.
#ifndef __COLLECTION
#define __COLLECTION
template <class DataType> class TCollection
{
int MaxLength; //集合的最大长度。
int Length; //集合长度
DataType *Element; //集合数组
public:
int Len(){return Length;};
TCollection(int Max=256); //无参数的构造函数
~TCollection(); //析构函数
bool Contain(DataType); //判别集合是否包含某个元素
void operator<<(DataType); //重载"<<"
void operator>>(DataType); //重载">>"
DataType operator[](int); //重载[]
int Location(DataType); //查找元素在集合中的位置
int Error; //错误代码
void RemoveElement(int); //删除指定序号的元素。
};
//=====================================================================
//无参数的构造函数
template <class DataType> TCollection<DataType> ::TCollection(int Max)
{
MaxLength=Max;
Element=new DataType[Max];
Length=0;
Error=0;
}
//--------------------------------------------------------------------
//---------------------------------------------------------------------
template <class DataType> TCollection<DataType> ::~TCollection()
{
delete []Element;
}
//---------------------------------------------------------------------
//判别集合是否包含某个元素
template <class DataType> bool TCollection<DataType> ::Contain(DataType t)
{
return (Location(t)==-1)?false:true;
}
//----------------------------------------------------------------------
//查找元素在集合中的位置
template <class DataType>int TCollection<DataType> ::Location(DataType t)
{
for(int i=0;i<Length;i++)
if(Element[i]==t)
return i;
return -1;
}
//---------------------------------------------------------------------
//用[]返回指定下标的元素
template <class DataType> DataType TCollection<DataType> ::operator[](int index)
{
if(index<Length&&index>=0)return Element[index];
else Error|=1; //设置错误代码:边界溢出=1
return Element[0];
}
//---------------------------------------------------------------------
//用<<向集合写入值
template <class DataType> void TCollection<DataType> ::operator<<(DataType ele1)
{
if((!Contain(ele1))&&Length<MaxLength)//如果不在其中并且在长度范围之内
Element[Length++]=ele1;
}
//---------------------------------------------------------------------
template <class DataType> void TCollection<DataType> ::RemoveElement(int index)
{
if(index>=Length||index<0)return;
int i;
for(i=index;i<Length-1;i++)
Element[i]=Element[i+1];
Length--;
}
//---------------------------------------------------------------------
//用>>从集合移去值
template <class DataType> void TCollection<DataType> ::operator>>(DataType ele1)
{
int i=Location(ele1);
if(i>=0)
RemoveElement(i);
}
//---------------------------------------------------------------------
#endif
//下面是使用示例
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
#include "collection.cpp"
//---------------------------------------------------------------------------
void main()
{
TCollection<int> poker(52);
int i;
for(i=0;i<52;i++)//把0~51加入集合中
poker<<i;
for(i=0;i<52;i+=2)//移除集合中的偶数
poker>>i;
for(i=0;i<poker.Len();i++)
cout<<poker[i]<<"->";//用[]输出指定下标的元素
cout<<poker.Len();//用Len()返回集合的长度
}
#ifndef __COLLECTION
#define __COLLECTION
template <class DataType> class TCollection
{
int MaxLength; //集合的最大长度。
int Length; //集合长度
DataType *Element; //集合数组
public:
int Len(){return Length;};
TCollection(int Max=256); //无参数的构造函数
~TCollection(); //析构函数
bool Contain(DataType); //判别集合是否包含某个元素
void operator<<(DataType); //重载"<<"
void operator>>(DataType); //重载">>"
DataType operator[](int); //重载[]
int Location(DataType); //查找元素在集合中的位置
int Error; //错误代码
void RemoveElement(int); //删除指定序号的元素。
};
//=====================================================================
//无参数的构造函数
template <class DataType> TCollection<DataType> ::TCollection(int Max)
{
MaxLength=Max;
Element=new DataType[Max];
Length=0;
Error=0;
}
//--------------------------------------------------------------------
//---------------------------------------------------------------------
template <class DataType> TCollection<DataType> ::~TCollection()
{
delete []Element;
}
//---------------------------------------------------------------------
//判别集合是否包含某个元素
template <class DataType> bool TCollection<DataType> ::Contain(DataType t)
{
return (Location(t)==-1)?false:true;
}
//----------------------------------------------------------------------
//查找元素在集合中的位置
template <class DataType>int TCollection<DataType> ::Location(DataType t)
{
for(int i=0;i<Length;i++)
if(Element[i]==t)
return i;
return -1;
}
//---------------------------------------------------------------------
//用[]返回指定下标的元素
template <class DataType> DataType TCollection<DataType> ::operator[](int index)
{
if(index<Length&&index>=0)return Element[index];
else Error|=1; //设置错误代码:边界溢出=1
return Element[0];
}
//---------------------------------------------------------------------
//用<<向集合写入值
template <class DataType> void TCollection<DataType> ::operator<<(DataType ele1)
{
if((!Contain(ele1))&&Length<MaxLength)//如果不在其中并且在长度范围之内
Element[Length++]=ele1;
}
//---------------------------------------------------------------------
template <class DataType> void TCollection<DataType> ::RemoveElement(int index)
{
if(index>=Length||index<0)return;
int i;
for(i=index;i<Length-1;i++)
Element[i]=Element[i+1];
Length--;
}
//---------------------------------------------------------------------
//用>>从集合移去值
template <class DataType> void TCollection<DataType> ::operator>>(DataType ele1)
{
int i=Location(ele1);
if(i>=0)
RemoveElement(i);
}
//---------------------------------------------------------------------
#endif
//下面是使用示例
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
#include "collection.cpp"
//---------------------------------------------------------------------------
void main()
{
TCollection<int> poker(52);
int i;
for(i=0;i<52;i++)//把0~51加入集合中
poker<<i;
for(i=0;i<52;i+=2)//移除集合中的偶数
poker>>i;
for(i=0;i<poker.Len();i++)
cout<<poker[i]<<"->";//用[]输出指定下标的元素
cout<<poker.Len();//用Len()返回集合的长度
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询